@aws/lsp-codewhisperer 0.0.69 → 0.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/out/language-server/agenticChat/agenticChatController.js +32 -26
- package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
- package/out/language-server/agenticChat/constants/constants.d.ts +1 -1
- package/out/language-server/agenticChat/constants/constants.js +2 -1
- package/out/language-server/agenticChat/constants/constants.js.map +1 -1
- package/out/language-server/agenticChat/constants/toolConstants.d.ts +1 -1
- package/out/language-server/agenticChat/constants/toolConstants.js +2 -2
- package/out/language-server/agenticChat/constants/toolConstants.js.map +1 -1
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.js +1 -1
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.js.map +1 -1
- package/out/language-server/agenticChat/qAgenticChatServer.d.ts +1 -1
- package/out/language-server/agenticChat/qAgenticChatServer.js +7 -8
- package/out/language-server/agenticChat/qAgenticChatServer.js.map +1 -1
- package/out/language-server/agenticChat/tools/chatDb/chatDb.d.ts +1 -0
- package/out/language-server/agenticChat/tools/chatDb/chatDb.js +3 -3
- package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
- package/out/language-server/agenticChat/tools/executeBash.js +6 -6
- package/out/language-server/agenticChat/tools/executeBash.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js +1 -2
- package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +5 -0
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js +60 -1
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.d.ts +1 -0
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +5 -0
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReview.d.ts → codeReview.d.ts} +3 -3
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReview.js → codeReview.js} +172 -115
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewConstants.d.ts → codeReviewConstants.d.ts} +7 -6
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewConstants.js → codeReviewConstants.js} +31 -20
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js.map +1 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewErrors.d.ts +12 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewErrors.js +32 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewErrors.js.map +1 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewSchemas.d.ts → codeReviewSchemas.d.ts} +6 -6
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewSchemas.js → codeReviewSchemas.js} +15 -15
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.js.map +1 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewTypes.d.ts → codeReviewTypes.d.ts} +22 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.js +15 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.js.map +1 -0
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewUtils.d.ts → codeReviewUtils.d.ts} +10 -14
- package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewUtils.js → codeReviewUtils.js} +29 -46
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.js.map +1 -0
- package/out/language-server/agenticChat/tools/toolServer.js +8 -8
- package/out/language-server/agenticChat/tools/toolServer.js.map +1 -1
- package/out/language-server/chat/chatSessionService.js +19 -5
- package/out/language-server/chat/chatSessionService.js.map +1 -1
- package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +3 -2
- package/out/language-server/chat/telemetry/chatTelemetryController.js +12 -2
- package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
- package/out/language-server/configuration/qConfigurationServer.d.ts +1 -1
- package/out/language-server/inline-completion/codeWhispererServer.js +8 -106
- package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
- package/out/language-server/inline-completion/telemetry.d.ts +9 -0
- package/out/language-server/inline-completion/telemetry.js +109 -0
- package/out/language-server/inline-completion/telemetry.js.map +1 -0
- package/out/language-server/netTransform/validation.d.ts +5 -0
- package/out/language-server/netTransform/validation.js +9 -2
- package/out/language-server/netTransform/validation.js.map +1 -1
- package/out/language-server/workspaceContext/artifactManager.d.ts +1 -0
- package/out/language-server/workspaceContext/artifactManager.js +31 -14
- package/out/language-server/workspaceContext/artifactManager.js.map +1 -1
- package/out/language-server/workspaceContext/workspaceContextServer.js +2 -0
- package/out/language-server/workspaceContext/workspaceContextServer.js.map +1 -1
- package/out/language-server/workspaceContext/workspaceFolderManager.d.ts +3 -0
- package/out/language-server/workspaceContext/workspaceFolderManager.js +24 -5
- package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -1
- package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.d.ts +1 -0
- package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js +16 -7
- package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -1
- package/out/shared/amazonQServiceManager/qDeveloperProfiles.js +48 -5
- package/out/shared/amazonQServiceManager/qDeveloperProfiles.js.map +1 -1
- package/out/shared/codeWhispererService.js +1 -0
- package/out/shared/codeWhispererService.js.map +1 -1
- package/out/shared/languageDetection.d.ts +14 -0
- package/out/shared/languageDetection.js +22 -0
- package/out/shared/languageDetection.js.map +1 -1
- package/out/shared/localProjectContextController.js +1 -3
- package/out/shared/localProjectContextController.js.map +1 -1
- package/out/shared/supplementalContextUtil/crossFileContextUtil.js +0 -10
- package/out/shared/supplementalContextUtil/crossFileContextUtil.js.map +1 -1
- package/out/shared/telemetry/types.d.ts +11 -0
- package/out/shared/telemetry/types.js +7 -1
- package/out/shared/telemetry/types.js.map +1 -1
- package/package.json +2 -2
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReview.js.map +0 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewConstants.js.map +0 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewErrors.d.ts +0 -12
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewErrors.js +0 -32
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewErrors.js.map +0 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewSchemas.js.map +0 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewTypes.js +0 -3
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewTypes.js.map +0 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewUtils.js.map +0 -1
package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReview.js → codeReview.js}
RENAMED
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* eslint-disable import/no-nodejs-modules */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
4
|
+
exports.CodeReview = void 0;
|
|
5
|
+
const codeReviewConstants_1 = require("./codeReviewConstants");
|
|
6
|
+
const codeReviewUtils_1 = require("./codeReviewUtils");
|
|
7
|
+
const codeReviewSchemas_1 = require("./codeReviewSchemas");
|
|
8
8
|
const crypto_1 = require("crypto");
|
|
9
9
|
const crypto = require("crypto");
|
|
10
10
|
const path = require("path");
|
|
11
11
|
const JSZip = require("jszip");
|
|
12
12
|
const fs_1 = require("fs");
|
|
13
|
-
const
|
|
13
|
+
const codeReviewErrors_1 = require("./codeReviewErrors");
|
|
14
|
+
const codeReviewTypes_1 = require("./codeReviewTypes");
|
|
14
15
|
const lsp_core_1 = require("@aws/lsp-core");
|
|
15
|
-
class
|
|
16
|
+
class CodeReview {
|
|
16
17
|
static CUSTOMER_CODE_BASE_PATH = 'customerCodeBaseFolder';
|
|
17
18
|
static CODE_ARTIFACT_PATH = 'code_artifact';
|
|
18
19
|
static CUSTOMER_CODE_ZIP_NAME = 'customerCode.zip';
|
|
19
20
|
static CODE_DIFF_PATH = 'code_artifact/codeDiff/customerCodeDiff.diff';
|
|
20
21
|
static RULE_ARTIFACT_PATH = '.amazonq/rules';
|
|
21
|
-
static MAX_POLLING_ATTEMPTS =
|
|
22
|
-
static MID_POLLING_ATTEMPTS =
|
|
22
|
+
static MAX_POLLING_ATTEMPTS = 60;
|
|
23
|
+
static MID_POLLING_ATTEMPTS = 20;
|
|
23
24
|
static POLLING_INTERVAL_MS = 10000;
|
|
24
25
|
static UPLOAD_INTENT = 'AGENTIC_CODE_REVIEW';
|
|
25
26
|
static SCAN_SCOPE = 'AGENTIC';
|
|
26
27
|
static MAX_FINDINGS_COUNT = 50;
|
|
27
28
|
static ERROR_MESSAGES = {
|
|
28
29
|
MISSING_CLIENT: 'CodeWhisperer client not available',
|
|
29
|
-
MISSING_ARTIFACTS: `Missing fileLevelArtifacts and folderLevelArtifacts for ${
|
|
30
|
+
MISSING_ARTIFACTS: `Missing fileLevelArtifacts and folderLevelArtifacts for ${codeReviewConstants_1.CODE_REVIEW_TOOL_NAME} tool. Ask user to provide a specific file / folder / workspace which has code that can be scanned.`,
|
|
30
31
|
MISSING_FILES_TO_SCAN: `There are no valid files to scan. Ask user to provide a specific file / folder / workspace which has code that can be scanned.`,
|
|
31
|
-
UPLOAD_FAILED: `Failed to upload artifact for code review in ${
|
|
32
|
-
START_CODE_ANALYSIS_FAILED: (
|
|
32
|
+
UPLOAD_FAILED: `Failed to upload artifact for code review in ${codeReviewConstants_1.CODE_REVIEW_TOOL_NAME} tool.`,
|
|
33
|
+
START_CODE_ANALYSIS_FAILED: (scanName, errorMessage) => `Failed to start code analysis for scanName - ${scanName} due to - ${errorMessage}`,
|
|
33
34
|
CODE_ANALYSIS_FAILED: (jobId, message) => `Code analysis failed for jobId - ${jobId} due to ${message}`,
|
|
34
35
|
SCAN_FAILED: 'Code scan failed',
|
|
35
36
|
TIMEOUT: (attempts) => `Code scan timed out after ${attempts} attempts. Ask user to provide a smaller size of code to scan.`,
|
|
@@ -47,11 +48,11 @@ class QCodeReview {
|
|
|
47
48
|
this.telemetry = features.telemetry;
|
|
48
49
|
this.workspace = features.workspace;
|
|
49
50
|
}
|
|
50
|
-
static toolName =
|
|
51
|
-
static toolDescription =
|
|
52
|
-
static inputSchema =
|
|
51
|
+
static toolName = codeReviewConstants_1.CODE_REVIEW_TOOL_NAME;
|
|
52
|
+
static toolDescription = codeReviewConstants_1.CODE_REVIEW_TOOL_DESCRIPTION;
|
|
53
|
+
static inputSchema = codeReviewSchemas_1.CODE_REVIEW_INPUT_SCHEMA;
|
|
53
54
|
/**
|
|
54
|
-
* Main execution method for the
|
|
55
|
+
* Main execution method for the CodeReview tool
|
|
55
56
|
* @param input User input parameters for code review
|
|
56
57
|
* @param context Execution context containing clients and tokens
|
|
57
58
|
* @returns Output containing code review results or error message
|
|
@@ -59,7 +60,7 @@ class QCodeReview {
|
|
|
59
60
|
async execute(input, context) {
|
|
60
61
|
let chatStreamWriter;
|
|
61
62
|
try {
|
|
62
|
-
this.logging.info(`Executing ${
|
|
63
|
+
this.logging.info(`Executing ${codeReviewConstants_1.CODE_REVIEW_TOOL_NAME}: ${JSON.stringify(input)}`);
|
|
63
64
|
// 1. Validate input
|
|
64
65
|
const setup = await this.validateInputAndSetup(input, context);
|
|
65
66
|
this.checkCancellation();
|
|
@@ -73,10 +74,10 @@ class QCodeReview {
|
|
|
73
74
|
this.checkCancellation();
|
|
74
75
|
await chatStreamWriter?.write('Reviewing your code...');
|
|
75
76
|
// 4. Wait for scan to complete
|
|
76
|
-
await this.pollForCompletion(analysisResult.jobId, setup
|
|
77
|
+
await this.pollForCompletion(analysisResult.jobId, setup, uploadResult, chatStreamWriter);
|
|
77
78
|
this.checkCancellation();
|
|
78
79
|
// 5. Process scan result
|
|
79
|
-
const results = await this.processResults(setup, uploadResult
|
|
80
|
+
const results = await this.processResults(setup, uploadResult, analysisResult.jobId);
|
|
80
81
|
return {
|
|
81
82
|
output: {
|
|
82
83
|
kind: 'json',
|
|
@@ -115,18 +116,25 @@ class QCodeReview {
|
|
|
115
116
|
this.writableStream = context.writableStream;
|
|
116
117
|
this.codeWhispererClient = context.codeWhispererClient;
|
|
117
118
|
if (!this.codeWhispererClient) {
|
|
118
|
-
throw new Error(
|
|
119
|
+
throw new Error(CodeReview.ERROR_MESSAGES.MISSING_CLIENT);
|
|
119
120
|
}
|
|
120
121
|
// parse input
|
|
121
|
-
const validatedInput =
|
|
122
|
+
const validatedInput = codeReviewSchemas_1.Z_CODE_REVIEW_INPUT_SCHEMA.parse(input);
|
|
122
123
|
const fileArtifacts = validatedInput.fileLevelArtifacts || [];
|
|
123
124
|
const folderArtifacts = validatedInput.folderLevelArtifacts || [];
|
|
124
125
|
const ruleArtifacts = validatedInput.ruleArtifacts || [];
|
|
125
126
|
if (fileArtifacts.length === 0 && folderArtifacts.length === 0) {
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
codeReviewUtils_1.CodeReviewUtils.emitMetric({
|
|
128
|
+
reason: codeReviewTypes_1.FailedMetricName.MissingFileOrFolder,
|
|
129
|
+
result: 'Failed',
|
|
130
|
+
reasonDesc: CodeReview.ERROR_MESSAGES.MISSING_ARTIFACTS,
|
|
131
|
+
metadata: {
|
|
132
|
+
credentialStartUrl: this.credentialsProvider.getConnectionMetadata()?.sso?.startUrl,
|
|
133
|
+
},
|
|
134
|
+
}, this.logging, this.telemetry);
|
|
135
|
+
throw new codeReviewErrors_1.CodeReviewValidationError(CodeReview.ERROR_MESSAGES.MISSING_ARTIFACTS);
|
|
128
136
|
}
|
|
129
|
-
const isFullReviewRequest = validatedInput.scopeOfReview?.toUpperCase() ===
|
|
137
|
+
const isFullReviewRequest = validatedInput.scopeOfReview?.toUpperCase() === codeReviewConstants_1.FULL_REVIEW;
|
|
130
138
|
const artifactType = fileArtifacts.length > 0 ? 'FILE' : 'FOLDER';
|
|
131
139
|
// Setting java as default language
|
|
132
140
|
// TODO: Remove requirement of programming language
|
|
@@ -149,11 +157,11 @@ class QCodeReview {
|
|
|
149
157
|
* @returns Upload result with uploadId or error message
|
|
150
158
|
*/
|
|
151
159
|
async prepareAndUploadArtifacts(setup) {
|
|
152
|
-
const { zipBuffer, md5Hash, isCodeDiffPresent } = await this.prepareFilesAndFoldersForUpload(setup.fileArtifacts, setup.folderArtifacts, setup.ruleArtifacts, setup.isFullReviewRequest);
|
|
160
|
+
const { zipBuffer, md5Hash, isCodeDiffPresent, programmingLanguages } = await this.prepareFilesAndFoldersForUpload(setup.fileArtifacts, setup.folderArtifacts, setup.ruleArtifacts, setup.isFullReviewRequest);
|
|
153
161
|
const uploadUrlResponse = await this.codeWhispererClient.createUploadUrl({
|
|
154
162
|
contentLength: zipBuffer.length,
|
|
155
163
|
contentMd5: md5Hash,
|
|
156
|
-
uploadIntent:
|
|
164
|
+
uploadIntent: CodeReview.UPLOAD_INTENT,
|
|
157
165
|
uploadContext: {
|
|
158
166
|
codeAnalysisUploadContext: {
|
|
159
167
|
codeScanName: setup.scanName,
|
|
@@ -161,22 +169,27 @@ class QCodeReview {
|
|
|
161
169
|
},
|
|
162
170
|
});
|
|
163
171
|
if (!uploadUrlResponse.uploadUrl || !uploadUrlResponse.uploadId) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
172
|
+
codeReviewUtils_1.CodeReviewUtils.emitMetric({
|
|
173
|
+
reason: codeReviewTypes_1.FailedMetricName.CreateUploadUrlFailed,
|
|
174
|
+
result: 'Failed',
|
|
175
|
+
reasonDesc: CodeReview.ERROR_MESSAGES.UPLOAD_FAILED,
|
|
176
|
+
metadata: {
|
|
177
|
+
artifactType: setup.artifactType,
|
|
178
|
+
codewhispererCodeScanJobId: setup.scanName,
|
|
179
|
+
codewhispererCodeScanSrcZipFileBytes: zipBuffer.length,
|
|
180
|
+
credentialStartUrl: this.credentialsProvider.getConnectionMetadata()?.sso?.startUrl,
|
|
181
|
+
programmingLanguages: programmingLanguages,
|
|
182
|
+
},
|
|
183
|
+
}, this.logging, this.telemetry);
|
|
184
|
+
throw new codeReviewErrors_1.CodeReviewValidationError(CodeReview.ERROR_MESSAGES.UPLOAD_FAILED);
|
|
171
185
|
}
|
|
172
|
-
await
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
186
|
+
await codeReviewUtils_1.CodeReviewUtils.uploadFileToPresignedUrl(uploadUrlResponse.uploadUrl, zipBuffer, uploadUrlResponse.requestHeaders || {}, this.logging);
|
|
187
|
+
return {
|
|
188
|
+
uploadId: uploadUrlResponse.uploadId,
|
|
189
|
+
isCodeDiffPresent,
|
|
176
190
|
artifactSize: zipBuffer.length,
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
return { uploadId: uploadUrlResponse.uploadId, isCodeDiffPresent };
|
|
191
|
+
programmingLanguages: programmingLanguages,
|
|
192
|
+
};
|
|
180
193
|
}
|
|
181
194
|
/**
|
|
182
195
|
* Initiates code analysis with the uploaded artifacts
|
|
@@ -188,21 +201,27 @@ class QCodeReview {
|
|
|
188
201
|
const createResponse = await this.codeWhispererClient.startCodeAnalysis({
|
|
189
202
|
artifacts: { SourceCode: uploadResult.uploadId },
|
|
190
203
|
programmingLanguage: { languageName: setup.programmingLanguage },
|
|
191
|
-
clientToken:
|
|
204
|
+
clientToken: codeReviewUtils_1.CodeReviewUtils.generateClientToken(),
|
|
192
205
|
codeScanName: setup.scanName,
|
|
193
|
-
scope:
|
|
206
|
+
scope: CodeReview.SCAN_SCOPE,
|
|
194
207
|
codeDiffMetadata: uploadResult.isCodeDiffPresent ? { codeDiffPath: '/code_artifact/codeDiff/' } : undefined,
|
|
195
208
|
});
|
|
196
209
|
if (!createResponse.jobId) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
210
|
+
codeReviewUtils_1.CodeReviewUtils.emitMetric({
|
|
211
|
+
reason: codeReviewTypes_1.FailedMetricName.CodeScanFailed,
|
|
212
|
+
result: 'Failed',
|
|
213
|
+
reasonDesc: CodeReview.ERROR_MESSAGES.START_CODE_ANALYSIS_FAILED(setup.scanName, createResponse.errorMessage),
|
|
214
|
+
metadata: {
|
|
215
|
+
artifactType: setup.artifactType,
|
|
216
|
+
codewhispererCodeScanJobId: setup.scanName,
|
|
217
|
+
codewhispererCodeScanSrcZipFileBytes: uploadResult.artifactSize,
|
|
218
|
+
credentialStartUrl: this.credentialsProvider.getConnectionMetadata()?.sso?.startUrl,
|
|
219
|
+
customRules: setup.ruleArtifacts.length,
|
|
220
|
+
programmingLanguages: Array.from(uploadResult.programmingLanguages),
|
|
221
|
+
scope: setup.isFullReviewRequest ? codeReviewConstants_1.FULL_REVIEW : codeReviewConstants_1.CODE_DIFF_REVIEW,
|
|
222
|
+
},
|
|
223
|
+
}, this.logging, this.telemetry);
|
|
224
|
+
throw new codeReviewErrors_1.CodeReviewInternalError(CodeReview.ERROR_MESSAGES.START_CODE_ANALYSIS_FAILED(setup.scanName, createResponse.errorMessage));
|
|
206
225
|
}
|
|
207
226
|
this.logging.info(`Code scan created with job ID: ${createResponse.jobId}`);
|
|
208
227
|
return {
|
|
@@ -217,38 +236,56 @@ class QCodeReview {
|
|
|
217
236
|
* @param artifactType Type of artifact being scanned (FILE or FOLDER)
|
|
218
237
|
* @param chatStreamWriter Stream writer for sending progress updates
|
|
219
238
|
*/
|
|
220
|
-
async pollForCompletion(jobId,
|
|
239
|
+
async pollForCompletion(jobId, setup, uploadResult, chatStreamWriter) {
|
|
221
240
|
let status = 'Pending';
|
|
222
241
|
let attemptCount = 0;
|
|
223
|
-
while (status === 'Pending' && attemptCount <
|
|
242
|
+
while (status === 'Pending' && attemptCount < CodeReview.MAX_POLLING_ATTEMPTS) {
|
|
224
243
|
this.logging.info(`Code scan status: ${status}, waiting...`);
|
|
225
|
-
await new Promise(resolve => setTimeout(resolve,
|
|
244
|
+
await new Promise(resolve => setTimeout(resolve, CodeReview.POLLING_INTERVAL_MS));
|
|
226
245
|
const statusResponse = await this.getCodeAnalysisStatus(jobId);
|
|
227
246
|
status = statusResponse.status;
|
|
228
247
|
attemptCount++;
|
|
229
248
|
if (statusResponse.errorMessage) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
249
|
+
codeReviewUtils_1.CodeReviewUtils.emitMetric({
|
|
250
|
+
reason: codeReviewTypes_1.FailedMetricName.CodeScanFailed,
|
|
251
|
+
result: 'Failed',
|
|
252
|
+
reasonDesc: CodeReview.ERROR_MESSAGES.CODE_ANALYSIS_FAILED(jobId, statusResponse.errorMessage),
|
|
253
|
+
metadata: {
|
|
254
|
+
artifactType: setup.artifactType,
|
|
255
|
+
codewhispererCodeScanJobId: jobId,
|
|
256
|
+
codewhispererCodeScanSrcZipFileBytes: uploadResult.artifactSize,
|
|
257
|
+
credentialStartUrl: this.credentialsProvider.getConnectionMetadata()?.sso?.startUrl,
|
|
258
|
+
customRules: setup.ruleArtifacts.length,
|
|
259
|
+
programmingLanguages: Array.from(uploadResult.programmingLanguages),
|
|
260
|
+
scope: setup.isFullReviewRequest ? codeReviewConstants_1.FULL_REVIEW : codeReviewConstants_1.CODE_DIFF_REVIEW,
|
|
261
|
+
status: status,
|
|
262
|
+
},
|
|
263
|
+
}, this.logging, this.telemetry);
|
|
264
|
+
throw new codeReviewErrors_1.CodeReviewInternalError(CodeReview.ERROR_MESSAGES.CODE_ANALYSIS_FAILED(jobId, statusResponse.errorMessage));
|
|
238
265
|
}
|
|
239
|
-
if (attemptCount ==
|
|
266
|
+
if (attemptCount == CodeReview.MID_POLLING_ATTEMPTS) {
|
|
240
267
|
await chatStreamWriter?.write('Still reviewing your code, it is taking just a bit longer than usual...');
|
|
241
268
|
}
|
|
242
269
|
this.checkCancellation('Command execution cancelled while waiting for scan to complete');
|
|
243
270
|
}
|
|
244
271
|
if (status === 'Pending') {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
272
|
+
codeReviewUtils_1.CodeReviewUtils.emitMetric({
|
|
273
|
+
reason: codeReviewTypes_1.FailedMetricName.CodeScanTimeout,
|
|
274
|
+
result: 'Failed',
|
|
275
|
+
reasonDesc: CodeReview.ERROR_MESSAGES.TIMEOUT(CodeReview.MAX_POLLING_ATTEMPTS),
|
|
276
|
+
metadata: {
|
|
277
|
+
artifactType: setup.artifactType,
|
|
278
|
+
codewhispererCodeScanJobId: jobId,
|
|
279
|
+
codewhispererCodeScanSrcZipFileBytes: uploadResult.artifactSize,
|
|
280
|
+
credentialStartUrl: this.credentialsProvider.getConnectionMetadata()?.sso?.startUrl,
|
|
281
|
+
customRules: setup.ruleArtifacts.length,
|
|
282
|
+
maxAttempts: CodeReview.MAX_POLLING_ATTEMPTS,
|
|
283
|
+
programmingLanguages: Array.from(uploadResult.programmingLanguages),
|
|
284
|
+
scope: setup.isFullReviewRequest ? codeReviewConstants_1.FULL_REVIEW : codeReviewConstants_1.CODE_DIFF_REVIEW,
|
|
285
|
+
status: status,
|
|
286
|
+
},
|
|
287
|
+
}, this.logging, this.telemetry);
|
|
288
|
+
throw new codeReviewErrors_1.CodeReviewTimeoutError(CodeReview.ERROR_MESSAGES.TIMEOUT(CodeReview.MAX_POLLING_ATTEMPTS));
|
|
252
289
|
}
|
|
253
290
|
this.logging.info(`Code scan completed with status: ${status}`);
|
|
254
291
|
}
|
|
@@ -259,19 +296,28 @@ class QCodeReview {
|
|
|
259
296
|
* @param jobId ID of the code analysis job
|
|
260
297
|
* @returns Processed results with findings grouped by file
|
|
261
298
|
*/
|
|
262
|
-
async processResults(setup,
|
|
263
|
-
const { totalFindings, findingsExceededLimit } = await this.collectFindings(jobId, setup.isFullReviewRequest, isCodeDiffPresent, setup.programmingLanguage);
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
299
|
+
async processResults(setup, uploadResult, jobId) {
|
|
300
|
+
const { totalFindings, findingsExceededLimit } = await this.collectFindings(jobId, setup.isFullReviewRequest, uploadResult.isCodeDiffPresent, setup.programmingLanguage);
|
|
301
|
+
codeReviewUtils_1.CodeReviewUtils.emitMetric({
|
|
302
|
+
reason: codeReviewTypes_1.SuccessMetricName.CodeScanSuccess,
|
|
303
|
+
result: 'Succeeded',
|
|
304
|
+
metadata: {
|
|
305
|
+
artifactType: setup.artifactType,
|
|
306
|
+
codewhispererCodeScanJobId: jobId,
|
|
307
|
+
codewhispererCodeScanSrcZipFileBytes: uploadResult.artifactSize,
|
|
308
|
+
codewhispererCodeScanTotalIssues: totalFindings.length,
|
|
309
|
+
credentialStartUrl: this.credentialsProvider.getConnectionMetadata()?.sso?.startUrl,
|
|
310
|
+
customRules: setup.ruleArtifacts.length,
|
|
311
|
+
programmingLanguages: Array.from(uploadResult.programmingLanguages),
|
|
312
|
+
scope: setup.isFullReviewRequest ? codeReviewConstants_1.FULL_REVIEW : codeReviewConstants_1.CODE_DIFF_REVIEW,
|
|
313
|
+
},
|
|
314
|
+
}, this.logging, this.telemetry);
|
|
315
|
+
const aggregatedCodeScanIssueList = this.aggregateFindingsByFile(findingsExceededLimit ? totalFindings.slice(0, CodeReview.MAX_FINDINGS_COUNT) : totalFindings, setup.fileArtifacts, setup.folderArtifacts);
|
|
270
316
|
this.logging.info('Findings count grouped by file');
|
|
271
317
|
aggregatedCodeScanIssueList.forEach(item => this.logging.info(`File path - ${item.filePath} Findings count - ${item.issues.length}`));
|
|
272
318
|
return {
|
|
273
319
|
codeReviewId: jobId,
|
|
274
|
-
message: `${
|
|
320
|
+
message: `${codeReviewConstants_1.CODE_REVIEW_TOOL_NAME} tool completed successfully.${findingsExceededLimit ? ` Inform the user that we are limiting findings to top ${CodeReview.MAX_FINDINGS_COUNT} based on severity.` : ''}`,
|
|
275
321
|
findingsByFile: JSON.stringify(aggregatedCodeScanIssueList),
|
|
276
322
|
};
|
|
277
323
|
}
|
|
@@ -299,7 +345,7 @@ class QCodeReview {
|
|
|
299
345
|
? parsedFindings.filter(finding => 'CodeDiff' === finding.findingContext)
|
|
300
346
|
: parsedFindings;
|
|
301
347
|
totalFindings = totalFindings.concat(filteredFindings);
|
|
302
|
-
if (totalFindings.length >
|
|
348
|
+
if (totalFindings.length > CodeReview.MAX_FINDINGS_COUNT) {
|
|
303
349
|
findingsExceededLimit = true;
|
|
304
350
|
break;
|
|
305
351
|
}
|
|
@@ -342,34 +388,34 @@ class QCodeReview {
|
|
|
342
388
|
const codeArtifactZip = new JSZip();
|
|
343
389
|
const customerCodeZip = new JSZip();
|
|
344
390
|
// Process files and folders
|
|
345
|
-
const codeDiff = await this.processArtifacts(fileArtifacts, folderArtifacts, ruleArtifacts, customerCodeZip, !isFullReviewRequest);
|
|
346
|
-
let numberOfFilesInCustomerCodeZip =
|
|
391
|
+
const { codeDiff, programmingLanguages } = await this.processArtifacts(fileArtifacts, folderArtifacts, ruleArtifacts, customerCodeZip, !isFullReviewRequest);
|
|
392
|
+
let numberOfFilesInCustomerCodeZip = codeReviewUtils_1.CodeReviewUtils.countZipFiles(customerCodeZip);
|
|
347
393
|
if (numberOfFilesInCustomerCodeZip > ruleArtifacts.length) {
|
|
348
394
|
// Validates that there are actual files to scan, other than rule artifacts
|
|
349
395
|
this.logging.info(`Total files in customerCodeZip - ${numberOfFilesInCustomerCodeZip}`);
|
|
350
396
|
}
|
|
351
397
|
else {
|
|
352
|
-
throw new
|
|
398
|
+
throw new codeReviewErrors_1.CodeReviewValidationError(CodeReview.ERROR_MESSAGES.MISSING_FILES_TO_SCAN);
|
|
353
399
|
}
|
|
354
400
|
// Generate user code zip buffer
|
|
355
|
-
const customerCodeBuffer = await
|
|
356
|
-
|
|
401
|
+
const customerCodeBuffer = await codeReviewUtils_1.CodeReviewUtils.generateZipBuffer(customerCodeZip);
|
|
402
|
+
codeReviewUtils_1.CodeReviewUtils.logZipStructure(customerCodeZip, 'User code', this.logging);
|
|
357
403
|
// Add user code zip to the main artifact zip
|
|
358
|
-
codeArtifactZip.file(`${
|
|
404
|
+
codeArtifactZip.file(`${CodeReview.CODE_ARTIFACT_PATH}/${CodeReview.CUSTOMER_CODE_ZIP_NAME}`, customerCodeBuffer);
|
|
359
405
|
let isCodeDiffPresent = false;
|
|
360
406
|
// Add code diff file if we have any diffs
|
|
361
407
|
if (codeDiff.trim()) {
|
|
362
408
|
this.logging.info(`Adding code diff to zip of size: ${codeDiff.length}`);
|
|
363
409
|
isCodeDiffPresent = true;
|
|
364
|
-
codeArtifactZip.file(
|
|
410
|
+
codeArtifactZip.file(CodeReview.CODE_DIFF_PATH, codeDiff);
|
|
365
411
|
}
|
|
366
412
|
// Generate the final code artifact zip
|
|
367
|
-
const zipBuffer = await
|
|
368
|
-
|
|
413
|
+
const zipBuffer = await codeReviewUtils_1.CodeReviewUtils.generateZipBuffer(codeArtifactZip);
|
|
414
|
+
codeReviewUtils_1.CodeReviewUtils.logZipStructure(codeArtifactZip, 'Code artifact', this.logging);
|
|
369
415
|
// Calculate MD5 hash of the zip buffer
|
|
370
416
|
const md5Hash = crypto.createHash('md5').update(zipBuffer).digest('hex');
|
|
371
417
|
this.logging.info(`Created zip archive, size: ${zipBuffer.byteLength} bytes, MD5: ${md5Hash}`);
|
|
372
|
-
return { zipBuffer, md5Hash, isCodeDiffPresent };
|
|
418
|
+
return { zipBuffer, md5Hash, isCodeDiffPresent, programmingLanguages };
|
|
373
419
|
}
|
|
374
420
|
catch (error) {
|
|
375
421
|
this.logging.error(`Error preparing files for upload: ${error}`);
|
|
@@ -386,14 +432,15 @@ class QCodeReview {
|
|
|
386
432
|
* @returns Combined code diff string from all artifacts
|
|
387
433
|
*/
|
|
388
434
|
async processArtifacts(fileArtifacts, folderArtifacts, ruleArtifacts, customerCodeZip, isCodeDiffScan) {
|
|
389
|
-
let codeDiff = '';
|
|
390
435
|
// Process files
|
|
391
|
-
codeDiff
|
|
436
|
+
let { codeDiff, programmingLanguages } = await this.processFileArtifacts(fileArtifacts, customerCodeZip, isCodeDiffScan);
|
|
392
437
|
// Process folders
|
|
393
|
-
|
|
438
|
+
const folderResult = await this.processFolderArtifacts(folderArtifacts, customerCodeZip, isCodeDiffScan);
|
|
439
|
+
codeDiff += folderResult.codeDiff;
|
|
440
|
+
folderResult.programmingLanguages.forEach(item => programmingLanguages.add(item));
|
|
394
441
|
// Process rule artifacts
|
|
395
442
|
await this.processRuleArtifacts(ruleArtifacts, customerCodeZip);
|
|
396
|
-
return codeDiff;
|
|
443
|
+
return { codeDiff, programmingLanguages };
|
|
397
444
|
}
|
|
398
445
|
/**
|
|
399
446
|
* Processes file artifacts for inclusion in the zip archive
|
|
@@ -404,23 +451,26 @@ class QCodeReview {
|
|
|
404
451
|
*/
|
|
405
452
|
async processFileArtifacts(fileArtifacts, customerCodeZip, isCodeDiffScan) {
|
|
406
453
|
let codeDiff = '';
|
|
454
|
+
let programmingLanguages = new Set();
|
|
407
455
|
for (const artifact of fileArtifacts) {
|
|
408
|
-
await
|
|
456
|
+
await codeReviewUtils_1.CodeReviewUtils.withErrorHandling(async () => {
|
|
409
457
|
let fileName = path.basename(artifact.path);
|
|
410
458
|
if (!fileName.startsWith('.') &&
|
|
411
|
-
!
|
|
459
|
+
!codeReviewUtils_1.CodeReviewUtils.shouldSkipFile(fileName) &&
|
|
412
460
|
(0, fs_1.existsSync)(artifact.path)) {
|
|
461
|
+
const fileLanguage = codeReviewUtils_1.CodeReviewUtils.getFileLanguage(fileName);
|
|
413
462
|
const fileContent = await this.workspace.fs.readFile(artifact.path);
|
|
414
|
-
let normalizedArtifactPath =
|
|
415
|
-
customerCodeZip.file(`${
|
|
463
|
+
let normalizedArtifactPath = codeReviewUtils_1.CodeReviewUtils.convertToUnixPath(artifact.path);
|
|
464
|
+
customerCodeZip.file(`${CodeReview.CUSTOMER_CODE_BASE_PATH}${normalizedArtifactPath}`, fileContent);
|
|
465
|
+
programmingLanguages.add(fileLanguage);
|
|
416
466
|
}
|
|
417
467
|
else {
|
|
418
468
|
this.logging.info(`Skipping file - ${artifact.path}`);
|
|
419
469
|
}
|
|
420
470
|
}, 'Failed to read file', this.logging, artifact.path);
|
|
421
|
-
codeDiff += await
|
|
471
|
+
codeDiff += await codeReviewUtils_1.CodeReviewUtils.processArtifactWithDiff(artifact, isCodeDiffScan, this.logging);
|
|
422
472
|
}
|
|
423
|
-
return codeDiff;
|
|
473
|
+
return { codeDiff, programmingLanguages };
|
|
424
474
|
}
|
|
425
475
|
/**
|
|
426
476
|
* Processes folder artifacts for inclusion in the zip archive
|
|
@@ -431,13 +481,15 @@ class QCodeReview {
|
|
|
431
481
|
*/
|
|
432
482
|
async processFolderArtifacts(folderArtifacts, customerCodeZip, isCodeDiffScan) {
|
|
433
483
|
let codeDiff = '';
|
|
484
|
+
let programmingLanguages = new Set();
|
|
434
485
|
for (const folderArtifact of folderArtifacts) {
|
|
435
|
-
await
|
|
436
|
-
await this.addFolderToZip(customerCodeZip, folderArtifact.path,
|
|
486
|
+
await codeReviewUtils_1.CodeReviewUtils.withErrorHandling(async () => {
|
|
487
|
+
let languages = await this.addFolderToZip(customerCodeZip, folderArtifact.path, CodeReview.CUSTOMER_CODE_BASE_PATH);
|
|
488
|
+
languages.forEach(item => programmingLanguages.add(item));
|
|
437
489
|
}, 'Failed to add folder', this.logging, folderArtifact.path);
|
|
438
|
-
codeDiff += await
|
|
490
|
+
codeDiff += await codeReviewUtils_1.CodeReviewUtils.processArtifactWithDiff(folderArtifact, isCodeDiffScan, this.logging);
|
|
439
491
|
}
|
|
440
|
-
return codeDiff;
|
|
492
|
+
return { codeDiff, programmingLanguages };
|
|
441
493
|
}
|
|
442
494
|
/**
|
|
443
495
|
* Processes rule artifacts for inclusion in the zip archive
|
|
@@ -446,13 +498,13 @@ class QCodeReview {
|
|
|
446
498
|
*/
|
|
447
499
|
async processRuleArtifacts(ruleArtifacts, customerCodeZip) {
|
|
448
500
|
for (const artifact of ruleArtifacts) {
|
|
449
|
-
await
|
|
501
|
+
await codeReviewUtils_1.CodeReviewUtils.withErrorHandling(async () => {
|
|
450
502
|
let fileName = path.basename(artifact.path);
|
|
451
503
|
if (!fileName.startsWith('.') &&
|
|
452
|
-
!
|
|
504
|
+
!codeReviewUtils_1.CodeReviewUtils.shouldSkipFile(fileName) &&
|
|
453
505
|
(0, fs_1.existsSync)(artifact.path)) {
|
|
454
506
|
const fileContent = await this.workspace.fs.readFile(artifact.path);
|
|
455
|
-
customerCodeZip.file(`${
|
|
507
|
+
customerCodeZip.file(`${CodeReview.CUSTOMER_CODE_BASE_PATH}/${CodeReview.RULE_ARTIFACT_PATH}/${fileName}`, fileContent);
|
|
456
508
|
}
|
|
457
509
|
else {
|
|
458
510
|
this.logging.info(`Skipping file - ${artifact.path}`);
|
|
@@ -468,27 +520,32 @@ class QCodeReview {
|
|
|
468
520
|
*/
|
|
469
521
|
async addFolderToZip(zip, folderPath, zipPath) {
|
|
470
522
|
try {
|
|
523
|
+
let programmingLanguages = new Set();
|
|
471
524
|
const entries = await this.workspace.fs.readdir(folderPath);
|
|
472
525
|
for (const entry of entries) {
|
|
473
526
|
const name = entry.name;
|
|
474
527
|
const fullPath = path.join(entry.parentPath, name);
|
|
475
528
|
if (entry.isFile()) {
|
|
476
|
-
if (name.startsWith('.') ||
|
|
529
|
+
if (name.startsWith('.') || codeReviewUtils_1.CodeReviewUtils.shouldSkipFile(name) || !(0, fs_1.existsSync)(fullPath)) {
|
|
477
530
|
this.logging.info(`Skipping file - ${fullPath}`);
|
|
478
531
|
continue;
|
|
479
532
|
}
|
|
533
|
+
const fileLanguage = codeReviewUtils_1.CodeReviewUtils.getFileLanguage(name);
|
|
480
534
|
const content = await this.workspace.fs.readFile(fullPath);
|
|
481
|
-
let normalizedArtifactPath =
|
|
535
|
+
let normalizedArtifactPath = codeReviewUtils_1.CodeReviewUtils.convertToUnixPath(fullPath);
|
|
482
536
|
zip.file(`${zipPath}${normalizedArtifactPath}`, content);
|
|
537
|
+
programmingLanguages.add(fileLanguage);
|
|
483
538
|
}
|
|
484
539
|
else if (entry.isDirectory()) {
|
|
485
|
-
if (
|
|
540
|
+
if (codeReviewUtils_1.CodeReviewUtils.shouldSkipDirectory(name)) {
|
|
486
541
|
this.logging.info(`Skipping directory - ${fullPath}`);
|
|
487
542
|
continue;
|
|
488
543
|
}
|
|
489
|
-
await this.addFolderToZip(zip, fullPath, zipPath);
|
|
544
|
+
let languages = await this.addFolderToZip(zip, fullPath, zipPath);
|
|
545
|
+
languages.forEach(item => programmingLanguages.add(item));
|
|
490
546
|
}
|
|
491
547
|
}
|
|
548
|
+
return programmingLanguages;
|
|
492
549
|
}
|
|
493
550
|
catch (error) {
|
|
494
551
|
this.logging.error(`Error adding folder to zip: ${error}`);
|
|
@@ -511,7 +568,7 @@ class QCodeReview {
|
|
|
511
568
|
finding['ruleId'] = undefined;
|
|
512
569
|
}
|
|
513
570
|
}
|
|
514
|
-
return
|
|
571
|
+
return codeReviewSchemas_1.FINDINGS_SCHEMA.parse(findingsResponseJSON).map(issue => ({
|
|
515
572
|
startLine: issue.startLine - 1 >= 0 ? issue.startLine - 1 : 0,
|
|
516
573
|
endLine: issue.endLine,
|
|
517
574
|
comment: `${issue.title.trim()}: ${issue.description.text.trim()}`,
|
|
@@ -534,7 +591,7 @@ class QCodeReview {
|
|
|
534
591
|
}
|
|
535
592
|
catch (e) {
|
|
536
593
|
this.logging.error(`Error parsing findings in response: ${e}`);
|
|
537
|
-
throw new
|
|
594
|
+
throw new codeReviewErrors_1.CodeReviewInternalError('Error parsing findings in response');
|
|
538
595
|
}
|
|
539
596
|
}
|
|
540
597
|
/**
|
|
@@ -623,8 +680,8 @@ class QCodeReview {
|
|
|
623
680
|
* @throws Error if the operation has been cancelled
|
|
624
681
|
*/
|
|
625
682
|
checkCancellation(message = 'Command execution cancelled') {
|
|
626
|
-
|
|
683
|
+
codeReviewUtils_1.CodeReviewUtils.checkCancellation(this.cancellationToken, this.logging, message);
|
|
627
684
|
}
|
|
628
685
|
}
|
|
629
|
-
exports.
|
|
630
|
-
//# sourceMappingURL=
|
|
686
|
+
exports.CodeReview = CodeReview;
|
|
687
|
+
//# sourceMappingURL=codeReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeReview.js","sourceRoot":"","sources":["../../../../../src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Constants related to programming languages and findings for
|
|
6
|
+
* Constants related to programming languages and findings for CodeReview
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
9
|
* Mapping of file extensions to programming languages
|
|
10
10
|
*/
|
|
11
11
|
export declare const EXTENSION_TO_LANGUAGE: Record<string, string>;
|
|
12
12
|
/**
|
|
13
|
-
* Tool name for
|
|
13
|
+
* Tool name for CodeReview
|
|
14
14
|
*/
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const CODE_REVIEW_TOOL_NAME = "codeReview";
|
|
16
16
|
/**
|
|
17
|
-
* Tool description for
|
|
17
|
+
* Tool description for CodeReview
|
|
18
18
|
*/
|
|
19
|
-
export declare const
|
|
19
|
+
export declare const CODE_REVIEW_TOOL_DESCRIPTION: string;
|
|
20
20
|
/**
|
|
21
21
|
* Finding severity levels
|
|
22
22
|
*/
|
|
@@ -31,4 +31,5 @@ export declare const SCOPE_OF_CODE_REVIEW: string[];
|
|
|
31
31
|
* Directories to skip during zip creation
|
|
32
32
|
*/
|
|
33
33
|
export declare const SKIP_DIRECTORIES: string[];
|
|
34
|
-
export declare const FINDINGS_MESSAGE_SUFFIX = "
|
|
34
|
+
export declare const FINDINGS_MESSAGE_SUFFIX = "_codeReviewFindings";
|
|
35
|
+
export declare const CODE_REVIEW_METRICS_PARENT_NAME = "amazonq_codeReviewTool";
|