mobbdev 1.4.23 → 1.4.26
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/dist/args/commands/upload_ai_blame.mjs +79 -14
- package/dist/index.mjs +200 -134
- package/package.json +1 -1
|
@@ -138,10 +138,16 @@ function getSdk(client, withWrapper = defaultWrapper) {
|
|
|
138
138
|
},
|
|
139
139
|
SkillVerdictsByMd5(variables, requestHeaders, signal) {
|
|
140
140
|
return withWrapper((wrappedRequestHeaders) => client.request({ document: SkillVerdictsByMd5Document, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "SkillVerdictsByMd5", "query", variables);
|
|
141
|
+
},
|
|
142
|
+
LogMvsEvent(variables, requestHeaders, signal) {
|
|
143
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: LogMvsEventDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "LogMvsEvent", "mutation", variables);
|
|
144
|
+
},
|
|
145
|
+
getMvsProject(variables, requestHeaders, signal) {
|
|
146
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetMvsProjectDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getMvsProject", "mutation", variables);
|
|
141
147
|
}
|
|
142
148
|
};
|
|
143
149
|
}
|
|
144
|
-
var AiBlameInferenceType, FixQuestionInputType, Language, ManifestAction, Effort_To_Apply_Fix_Enum, Fix_Rating_Tag_Enum, Fix_Report_State_Enum, Fix_State_Enum, IssueLanguage_Enum, IssueType_Enum, Pr_Status_Enum, Project_Role_Type_Enum, Vulnerability_Report_Issue_Category_Enum, Vulnerability_Report_Issue_State_Enum, Vulnerability_Report_Issue_Tag_Enum, Vulnerability_Report_Vendor_Enum, Vulnerability_Severity_Enum, FixDetailsFragmentDoc, FixReportSummaryFieldsFragmentDoc, MeDocument, GetLastOrgAndNamedProjectDocument, GetLastOrgDocument, GetEncryptedApiTokenDocument, FixReportStateDocument, GetVulnerabilityReportPathsDocument, GetAnalysisSubscriptionDocument, GetAnalysisDocument, GetFixesDocument, GetVulByNodesMetadataDocument, GetFalsePositiveDocument, UpdateScmTokenDocument, UploadS3BucketInfoDocument, GetTracyDiffUploadUrlDocument, AnalyzeCommitForExtensionAiBlameDocument, GetAiBlameInferenceDocument, GetAiBlameAttributionPromptDocument, GetPromptSummaryDocument, UploadAiBlameInferencesInitDocument, FinalizeAiBlameInferencesUploadDocument, UploadTracyRecordsDocument, GetTracyRawDataUploadUrlDocument, DigestVulnerabilityReportDocument, SubmitVulnerabilityReportDocument, CreateCommunityUserDocument, CreateCliLoginDocument, PerformCliLoginDocument, SetQuarantineEnabledDocument, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixWithAnswersDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, SkillVerdictsByMd5Document, defaultWrapper;
|
|
150
|
+
var AiBlameInferenceType, FixQuestionInputType, Language, ManifestAction, Effort_To_Apply_Fix_Enum, Fix_Rating_Tag_Enum, Fix_Report_State_Enum, Fix_State_Enum, IssueLanguage_Enum, IssueType_Enum, Pr_Status_Enum, Project_Role_Type_Enum, Vulnerability_Report_Issue_Category_Enum, Vulnerability_Report_Issue_State_Enum, Vulnerability_Report_Issue_Tag_Enum, Vulnerability_Report_Vendor_Enum, Vulnerability_Severity_Enum, FixDetailsFragmentDoc, FixReportSummaryFieldsFragmentDoc, MeDocument, GetLastOrgAndNamedProjectDocument, GetLastOrgDocument, GetEncryptedApiTokenDocument, FixReportStateDocument, GetVulnerabilityReportPathsDocument, GetAnalysisSubscriptionDocument, GetAnalysisDocument, GetFixesDocument, GetVulByNodesMetadataDocument, GetFalsePositiveDocument, UpdateScmTokenDocument, UploadS3BucketInfoDocument, GetTracyDiffUploadUrlDocument, AnalyzeCommitForExtensionAiBlameDocument, GetAiBlameInferenceDocument, GetAiBlameAttributionPromptDocument, GetPromptSummaryDocument, UploadAiBlameInferencesInitDocument, FinalizeAiBlameInferencesUploadDocument, UploadTracyRecordsDocument, GetTracyRawDataUploadUrlDocument, DigestVulnerabilityReportDocument, SubmitVulnerabilityReportDocument, CreateCommunityUserDocument, CreateCliLoginDocument, PerformCliLoginDocument, SetQuarantineEnabledDocument, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixWithAnswersDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, SkillVerdictsByMd5Document, LogMvsEventDocument, GetMvsProjectDocument, defaultWrapper;
|
|
145
151
|
var init_client_generates = __esm({
|
|
146
152
|
"src/features/analysis/scm/generates/client_generates.ts"() {
|
|
147
153
|
"use strict";
|
|
@@ -1077,7 +1083,7 @@ var init_client_generates = __esm({
|
|
|
1077
1083
|
}
|
|
1078
1084
|
`;
|
|
1079
1085
|
SubmitVulnerabilityReportDocument = `
|
|
1080
|
-
mutation SubmitVulnerabilityReport($fixReportId: String!, $repoUrl: String!, $reference: String!, $projectId: String!, $scanSource: String!, $sha: String, $experimentalEnabled: Boolean, $vulnerabilityReportFileName: String, $pullRequest: Int, $isFullScan: Boolean, $scanContext: String!, $fileCount: Int) {
|
|
1086
|
+
mutation SubmitVulnerabilityReport($fixReportId: String!, $repoUrl: String!, $reference: String!, $projectId: String!, $scanSource: String!, $sha: String, $experimentalEnabled: Boolean, $vulnerabilityReportFileName: String, $pullRequest: Int, $isFullScan: Boolean, $scanContext: String!, $fileCount: Int, $computerName: String, $computerUser: String, $clientVersion: String) {
|
|
1081
1087
|
submitVulnerabilityReport(
|
|
1082
1088
|
fixReportId: $fixReportId
|
|
1083
1089
|
repoUrl: $repoUrl
|
|
@@ -1091,6 +1097,9 @@ var init_client_generates = __esm({
|
|
|
1091
1097
|
scanSource: $scanSource
|
|
1092
1098
|
scanContext: $scanContext
|
|
1093
1099
|
fileCount: $fileCount
|
|
1100
|
+
computerName: $computerName
|
|
1101
|
+
computerUser: $computerUser
|
|
1102
|
+
clientVersion: $clientVersion
|
|
1094
1103
|
) {
|
|
1095
1104
|
__typename
|
|
1096
1105
|
... on VulnerabilityReport {
|
|
@@ -1365,6 +1374,29 @@ var init_client_generates = __esm({
|
|
|
1365
1374
|
scannedAt
|
|
1366
1375
|
}
|
|
1367
1376
|
}
|
|
1377
|
+
}
|
|
1378
|
+
`;
|
|
1379
|
+
LogMvsEventDocument = `
|
|
1380
|
+
mutation LogMvsEvent($eventType: String!, $fixReportId: String, $projectId: String, $repoUrl: String, $riskCount: Int, $computerName: String, $computerUser: String, $clientVersion: String) {
|
|
1381
|
+
logMvsEvent(
|
|
1382
|
+
eventType: $eventType
|
|
1383
|
+
fixReportId: $fixReportId
|
|
1384
|
+
projectId: $projectId
|
|
1385
|
+
repoUrl: $repoUrl
|
|
1386
|
+
riskCount: $riskCount
|
|
1387
|
+
computerName: $computerName
|
|
1388
|
+
computerUser: $computerUser
|
|
1389
|
+
clientVersion: $clientVersion
|
|
1390
|
+
) {
|
|
1391
|
+
status
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
`;
|
|
1395
|
+
GetMvsProjectDocument = `
|
|
1396
|
+
mutation getMvsProject($organizationId: String!) {
|
|
1397
|
+
getMvsProject(organizationId: $organizationId) {
|
|
1398
|
+
projectId
|
|
1399
|
+
}
|
|
1368
1400
|
}
|
|
1369
1401
|
`;
|
|
1370
1402
|
defaultWrapper = (action, _operationName, _operationType, _variables) => action();
|
|
@@ -1625,7 +1657,8 @@ var init_issue = __esm({
|
|
|
1625
1657
|
category: z4.nativeEnum(Vulnerability_Report_Issue_Category_Enum),
|
|
1626
1658
|
extraData: z4.object({
|
|
1627
1659
|
missing_files: z4.string().array().nullish(),
|
|
1628
|
-
error_files: z4.string().array().nullish()
|
|
1660
|
+
error_files: z4.string().array().nullish(),
|
|
1661
|
+
ai_cost_limit_exceeded: z4.string().nullish()
|
|
1629
1662
|
}),
|
|
1630
1663
|
vulnerabilityReportIssueTags: z4.array(
|
|
1631
1664
|
z4.object({
|
|
@@ -2166,7 +2199,8 @@ var init_types = __esm({
|
|
|
2166
2199
|
extraData: z7.object({
|
|
2167
2200
|
missing_files: z7.string().array().nullish(),
|
|
2168
2201
|
large_files: z7.string().array().nullish(),
|
|
2169
|
-
error_files: z7.string().array().nullish()
|
|
2202
|
+
error_files: z7.string().array().nullish(),
|
|
2203
|
+
ai_cost_limit_exceeded: z7.string().nullish()
|
|
2170
2204
|
})
|
|
2171
2205
|
}).array()
|
|
2172
2206
|
})
|
|
@@ -2205,7 +2239,8 @@ var init_types = __esm({
|
|
|
2205
2239
|
extraData: z7.object({
|
|
2206
2240
|
missing_files: z7.string().array().nullish(),
|
|
2207
2241
|
large_files: z7.string().array().nullish(),
|
|
2208
|
-
error_files: z7.string().array().nullish()
|
|
2242
|
+
error_files: z7.string().array().nullish(),
|
|
2243
|
+
ai_cost_limit_exceeded: z7.string().nullish()
|
|
2209
2244
|
}),
|
|
2210
2245
|
fix: ReportFixesQueryFixZ.nullable(),
|
|
2211
2246
|
falsePositive: z7.object({
|
|
@@ -4494,7 +4529,6 @@ var CliError = class extends Error {
|
|
|
4494
4529
|
|
|
4495
4530
|
// src/commands/AuthManager.ts
|
|
4496
4531
|
import crypto from "crypto";
|
|
4497
|
-
import os from "os";
|
|
4498
4532
|
import Debug10 from "debug";
|
|
4499
4533
|
import open from "open";
|
|
4500
4534
|
|
|
@@ -7015,6 +7049,7 @@ import { fetch as fetch2, ProxyAgent } from "undici";
|
|
|
7015
7049
|
|
|
7016
7050
|
// src/features/analysis/scm/gitlab/gitlab.ts
|
|
7017
7051
|
import querystring3 from "querystring";
|
|
7052
|
+
import { setTimeout as delay } from "timers/promises";
|
|
7018
7053
|
import {
|
|
7019
7054
|
createRequesterFn
|
|
7020
7055
|
} from "@gitbeaker/requester-utils";
|
|
@@ -7781,7 +7816,7 @@ async function sanitizeDataWithCounts(obj, options) {
|
|
|
7781
7816
|
}
|
|
7782
7817
|
|
|
7783
7818
|
// src/utils/with-timeout.ts
|
|
7784
|
-
import { setTimeout as
|
|
7819
|
+
import { setTimeout as delay2 } from "timers/promises";
|
|
7785
7820
|
|
|
7786
7821
|
// src/features/analysis/graphql/s3-raw-data-upload.ts
|
|
7787
7822
|
import { setTimeout as sleep2 } from "timers/promises";
|
|
@@ -7885,16 +7920,42 @@ var URL_REFRESH_MS = 20 * 60 * 1e3;
|
|
|
7885
7920
|
var debug10 = Debug9("mobbdev:tracy-batch-upload");
|
|
7886
7921
|
|
|
7887
7922
|
// src/mcp/services/types.ts
|
|
7888
|
-
|
|
7923
|
+
import os from "os";
|
|
7924
|
+
function buildLoginUrl(baseUrl, loginId, machine, context) {
|
|
7889
7925
|
const url = new URL(`${baseUrl}/${loginId}`);
|
|
7890
|
-
url.searchParams.set("hostname", hostname);
|
|
7891
|
-
|
|
7892
|
-
|
|
7893
|
-
|
|
7894
|
-
|
|
7926
|
+
url.searchParams.set("hostname", machine.hostname);
|
|
7927
|
+
if (machine.computerUser) {
|
|
7928
|
+
url.searchParams.set("computerUser", machine.computerUser);
|
|
7929
|
+
}
|
|
7930
|
+
if (machine.clientVersion) {
|
|
7931
|
+
url.searchParams.set("clientVersion", machine.clientVersion);
|
|
7932
|
+
}
|
|
7933
|
+
if (context) {
|
|
7934
|
+
url.searchParams.set("trigger", context.trigger);
|
|
7935
|
+
url.searchParams.set("source", context.source);
|
|
7936
|
+
if (context.ide) {
|
|
7937
|
+
url.searchParams.set("ide", context.ide);
|
|
7938
|
+
}
|
|
7895
7939
|
}
|
|
7896
7940
|
return url.toString();
|
|
7897
7941
|
}
|
|
7942
|
+
function getComputerUser() {
|
|
7943
|
+
try {
|
|
7944
|
+
return os.userInfo().username || void 0;
|
|
7945
|
+
} catch {
|
|
7946
|
+
return void 0;
|
|
7947
|
+
}
|
|
7948
|
+
}
|
|
7949
|
+
function getLoginMachineInfo() {
|
|
7950
|
+
return {
|
|
7951
|
+
hostname: os.hostname(),
|
|
7952
|
+
computerUser: getComputerUser(),
|
|
7953
|
+
clientVersion: packageJson.version
|
|
7954
|
+
};
|
|
7955
|
+
}
|
|
7956
|
+
function buildLoginBrowserUrl(baseUrl, loginId, context) {
|
|
7957
|
+
return buildLoginUrl(baseUrl, loginId, getLoginMachineInfo(), context);
|
|
7958
|
+
}
|
|
7898
7959
|
|
|
7899
7960
|
// src/utils/ConfigStoreService.ts
|
|
7900
7961
|
import Configstore from "configstore";
|
|
@@ -8057,7 +8118,11 @@ var _AuthManager = class _AuthManager {
|
|
|
8057
8118
|
publicKey: this.publicKey.export({ format: "pem", type: "pkcs1" }).toString()
|
|
8058
8119
|
});
|
|
8059
8120
|
const webLoginUrl = `${this.resolvedWebAppUrl}${loginPath || "/cli-login"}`;
|
|
8060
|
-
const browserUrl =
|
|
8121
|
+
const browserUrl = buildLoginBrowserUrl(
|
|
8122
|
+
webLoginUrl,
|
|
8123
|
+
this.loginId,
|
|
8124
|
+
loginContext
|
|
8125
|
+
);
|
|
8061
8126
|
this.currentBrowserUrl = browserUrl;
|
|
8062
8127
|
return browserUrl;
|
|
8063
8128
|
} catch (error) {
|
package/dist/index.mjs
CHANGED
|
@@ -138,10 +138,16 @@ function getSdk(client, withWrapper = defaultWrapper) {
|
|
|
138
138
|
},
|
|
139
139
|
SkillVerdictsByMd5(variables, requestHeaders, signal) {
|
|
140
140
|
return withWrapper((wrappedRequestHeaders) => client.request({ document: SkillVerdictsByMd5Document, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "SkillVerdictsByMd5", "query", variables);
|
|
141
|
+
},
|
|
142
|
+
LogMvsEvent(variables, requestHeaders, signal) {
|
|
143
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: LogMvsEventDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "LogMvsEvent", "mutation", variables);
|
|
144
|
+
},
|
|
145
|
+
getMvsProject(variables, requestHeaders, signal) {
|
|
146
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetMvsProjectDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getMvsProject", "mutation", variables);
|
|
141
147
|
}
|
|
142
148
|
};
|
|
143
149
|
}
|
|
144
|
-
var AiBlameInferenceType, FixQuestionInputType, Language, ManifestAction, Effort_To_Apply_Fix_Enum, Fix_Rating_Tag_Enum, Fix_Report_State_Enum, Fix_State_Enum, IssueLanguage_Enum, IssueType_Enum, Pr_Status_Enum, Project_Role_Type_Enum, Vulnerability_Report_Issue_Category_Enum, Vulnerability_Report_Issue_State_Enum, Vulnerability_Report_Issue_Tag_Enum, Vulnerability_Report_Vendor_Enum, Vulnerability_Severity_Enum, FixDetailsFragmentDoc, FixReportSummaryFieldsFragmentDoc, MeDocument, GetLastOrgAndNamedProjectDocument, GetLastOrgDocument, GetEncryptedApiTokenDocument, FixReportStateDocument, GetVulnerabilityReportPathsDocument, GetAnalysisSubscriptionDocument, GetAnalysisDocument, GetFixesDocument, GetVulByNodesMetadataDocument, GetFalsePositiveDocument, UpdateScmTokenDocument, UploadS3BucketInfoDocument, GetTracyDiffUploadUrlDocument, AnalyzeCommitForExtensionAiBlameDocument, GetAiBlameInferenceDocument, GetAiBlameAttributionPromptDocument, GetPromptSummaryDocument, UploadAiBlameInferencesInitDocument, FinalizeAiBlameInferencesUploadDocument, UploadTracyRecordsDocument, GetTracyRawDataUploadUrlDocument, DigestVulnerabilityReportDocument, SubmitVulnerabilityReportDocument, CreateCommunityUserDocument, CreateCliLoginDocument, PerformCliLoginDocument, SetQuarantineEnabledDocument, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixWithAnswersDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, SkillVerdictsByMd5Document, defaultWrapper;
|
|
150
|
+
var AiBlameInferenceType, FixQuestionInputType, Language, ManifestAction, Effort_To_Apply_Fix_Enum, Fix_Rating_Tag_Enum, Fix_Report_State_Enum, Fix_State_Enum, IssueLanguage_Enum, IssueType_Enum, Pr_Status_Enum, Project_Role_Type_Enum, Vulnerability_Report_Issue_Category_Enum, Vulnerability_Report_Issue_State_Enum, Vulnerability_Report_Issue_Tag_Enum, Vulnerability_Report_Vendor_Enum, Vulnerability_Severity_Enum, FixDetailsFragmentDoc, FixReportSummaryFieldsFragmentDoc, MeDocument, GetLastOrgAndNamedProjectDocument, GetLastOrgDocument, GetEncryptedApiTokenDocument, FixReportStateDocument, GetVulnerabilityReportPathsDocument, GetAnalysisSubscriptionDocument, GetAnalysisDocument, GetFixesDocument, GetVulByNodesMetadataDocument, GetFalsePositiveDocument, UpdateScmTokenDocument, UploadS3BucketInfoDocument, GetTracyDiffUploadUrlDocument, AnalyzeCommitForExtensionAiBlameDocument, GetAiBlameInferenceDocument, GetAiBlameAttributionPromptDocument, GetPromptSummaryDocument, UploadAiBlameInferencesInitDocument, FinalizeAiBlameInferencesUploadDocument, UploadTracyRecordsDocument, GetTracyRawDataUploadUrlDocument, DigestVulnerabilityReportDocument, SubmitVulnerabilityReportDocument, CreateCommunityUserDocument, CreateCliLoginDocument, PerformCliLoginDocument, SetQuarantineEnabledDocument, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixWithAnswersDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, SkillVerdictsByMd5Document, LogMvsEventDocument, GetMvsProjectDocument, defaultWrapper;
|
|
145
151
|
var init_client_generates = __esm({
|
|
146
152
|
"src/features/analysis/scm/generates/client_generates.ts"() {
|
|
147
153
|
"use strict";
|
|
@@ -1077,7 +1083,7 @@ var init_client_generates = __esm({
|
|
|
1077
1083
|
}
|
|
1078
1084
|
`;
|
|
1079
1085
|
SubmitVulnerabilityReportDocument = `
|
|
1080
|
-
mutation SubmitVulnerabilityReport($fixReportId: String!, $repoUrl: String!, $reference: String!, $projectId: String!, $scanSource: String!, $sha: String, $experimentalEnabled: Boolean, $vulnerabilityReportFileName: String, $pullRequest: Int, $isFullScan: Boolean, $scanContext: String!, $fileCount: Int) {
|
|
1086
|
+
mutation SubmitVulnerabilityReport($fixReportId: String!, $repoUrl: String!, $reference: String!, $projectId: String!, $scanSource: String!, $sha: String, $experimentalEnabled: Boolean, $vulnerabilityReportFileName: String, $pullRequest: Int, $isFullScan: Boolean, $scanContext: String!, $fileCount: Int, $computerName: String, $computerUser: String, $clientVersion: String) {
|
|
1081
1087
|
submitVulnerabilityReport(
|
|
1082
1088
|
fixReportId: $fixReportId
|
|
1083
1089
|
repoUrl: $repoUrl
|
|
@@ -1091,6 +1097,9 @@ var init_client_generates = __esm({
|
|
|
1091
1097
|
scanSource: $scanSource
|
|
1092
1098
|
scanContext: $scanContext
|
|
1093
1099
|
fileCount: $fileCount
|
|
1100
|
+
computerName: $computerName
|
|
1101
|
+
computerUser: $computerUser
|
|
1102
|
+
clientVersion: $clientVersion
|
|
1094
1103
|
) {
|
|
1095
1104
|
__typename
|
|
1096
1105
|
... on VulnerabilityReport {
|
|
@@ -1365,6 +1374,29 @@ var init_client_generates = __esm({
|
|
|
1365
1374
|
scannedAt
|
|
1366
1375
|
}
|
|
1367
1376
|
}
|
|
1377
|
+
}
|
|
1378
|
+
`;
|
|
1379
|
+
LogMvsEventDocument = `
|
|
1380
|
+
mutation LogMvsEvent($eventType: String!, $fixReportId: String, $projectId: String, $repoUrl: String, $riskCount: Int, $computerName: String, $computerUser: String, $clientVersion: String) {
|
|
1381
|
+
logMvsEvent(
|
|
1382
|
+
eventType: $eventType
|
|
1383
|
+
fixReportId: $fixReportId
|
|
1384
|
+
projectId: $projectId
|
|
1385
|
+
repoUrl: $repoUrl
|
|
1386
|
+
riskCount: $riskCount
|
|
1387
|
+
computerName: $computerName
|
|
1388
|
+
computerUser: $computerUser
|
|
1389
|
+
clientVersion: $clientVersion
|
|
1390
|
+
) {
|
|
1391
|
+
status
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
`;
|
|
1395
|
+
GetMvsProjectDocument = `
|
|
1396
|
+
mutation getMvsProject($organizationId: String!) {
|
|
1397
|
+
getMvsProject(organizationId: $organizationId) {
|
|
1398
|
+
projectId
|
|
1399
|
+
}
|
|
1368
1400
|
}
|
|
1369
1401
|
`;
|
|
1370
1402
|
defaultWrapper = (action, _operationName, _operationType, _variables) => action();
|
|
@@ -1853,7 +1885,8 @@ var init_issue = __esm({
|
|
|
1853
1885
|
category: z9.nativeEnum(Vulnerability_Report_Issue_Category_Enum),
|
|
1854
1886
|
extraData: z9.object({
|
|
1855
1887
|
missing_files: z9.string().array().nullish(),
|
|
1856
|
-
error_files: z9.string().array().nullish()
|
|
1888
|
+
error_files: z9.string().array().nullish(),
|
|
1889
|
+
ai_cost_limit_exceeded: z9.string().nullish()
|
|
1857
1890
|
}),
|
|
1858
1891
|
vulnerabilityReportIssueTags: z9.array(
|
|
1859
1892
|
z9.object({
|
|
@@ -2211,7 +2244,8 @@ var init_types = __esm({
|
|
|
2211
2244
|
extraData: z11.object({
|
|
2212
2245
|
missing_files: z11.string().array().nullish(),
|
|
2213
2246
|
large_files: z11.string().array().nullish(),
|
|
2214
|
-
error_files: z11.string().array().nullish()
|
|
2247
|
+
error_files: z11.string().array().nullish(),
|
|
2248
|
+
ai_cost_limit_exceeded: z11.string().nullish()
|
|
2215
2249
|
})
|
|
2216
2250
|
}).array()
|
|
2217
2251
|
})
|
|
@@ -2250,7 +2284,8 @@ var init_types = __esm({
|
|
|
2250
2284
|
extraData: z11.object({
|
|
2251
2285
|
missing_files: z11.string().array().nullish(),
|
|
2252
2286
|
large_files: z11.string().array().nullish(),
|
|
2253
|
-
error_files: z11.string().array().nullish()
|
|
2287
|
+
error_files: z11.string().array().nullish(),
|
|
2288
|
+
ai_cost_limit_exceeded: z11.string().nullish()
|
|
2254
2289
|
}),
|
|
2255
2290
|
fix: ReportFixesQueryFixZ.nullable(),
|
|
2256
2291
|
falsePositive: z11.object({
|
|
@@ -10915,6 +10950,7 @@ var GithubSCMLib = class extends SCMLib {
|
|
|
10915
10950
|
|
|
10916
10951
|
// src/features/analysis/scm/gitlab/gitlab.ts
|
|
10917
10952
|
import querystring3 from "querystring";
|
|
10953
|
+
import { setTimeout as delay } from "timers/promises";
|
|
10918
10954
|
import {
|
|
10919
10955
|
createRequesterFn
|
|
10920
10956
|
} from "@gitbeaker/requester-utils";
|
|
@@ -11576,6 +11612,9 @@ async function processBody(response) {
|
|
|
11576
11612
|
}
|
|
11577
11613
|
return await response.text();
|
|
11578
11614
|
}
|
|
11615
|
+
var GITLAB_RETRYABLE_STATUSES = /* @__PURE__ */ new Set([429, 502, 503, 504]);
|
|
11616
|
+
var GITLAB_REQUEST_MAX_ATTEMPTS = 4;
|
|
11617
|
+
var GITLAB_REQUEST_BASE_BACKOFF_MS = 1e3;
|
|
11579
11618
|
async function brokerRequestHandler(endpoint, options) {
|
|
11580
11619
|
const { prefixUrl, searchParams } = options || {};
|
|
11581
11620
|
let baseUrl;
|
|
@@ -11588,24 +11627,42 @@ async function brokerRequestHandler(endpoint, options) {
|
|
|
11588
11627
|
rejectUnauthorized: false
|
|
11589
11628
|
}
|
|
11590
11629
|
}) : void 0;
|
|
11591
|
-
|
|
11592
|
-
|
|
11593
|
-
|
|
11594
|
-
|
|
11595
|
-
|
|
11596
|
-
|
|
11597
|
-
|
|
11598
|
-
|
|
11630
|
+
let lastError;
|
|
11631
|
+
for (let attempt = 1; attempt <= GITLAB_REQUEST_MAX_ATTEMPTS; attempt++) {
|
|
11632
|
+
let response;
|
|
11633
|
+
try {
|
|
11634
|
+
response = await undiciFetch(url, {
|
|
11635
|
+
headers: options?.headers,
|
|
11636
|
+
method: options?.method,
|
|
11637
|
+
body: options?.body ? String(options?.body) : void 0,
|
|
11638
|
+
dispatcher
|
|
11639
|
+
});
|
|
11640
|
+
} catch (e) {
|
|
11641
|
+
if (e.name === "TimeoutError" || e.name === "AbortError") {
|
|
11642
|
+
lastError = new Error("Query timeout was reached");
|
|
11643
|
+
} else {
|
|
11644
|
+
throw e;
|
|
11645
|
+
}
|
|
11599
11646
|
}
|
|
11600
|
-
|
|
11601
|
-
|
|
11602
|
-
|
|
11603
|
-
|
|
11604
|
-
|
|
11605
|
-
|
|
11606
|
-
|
|
11607
|
-
|
|
11608
|
-
|
|
11647
|
+
if (response) {
|
|
11648
|
+
if (response.ok) {
|
|
11649
|
+
return {
|
|
11650
|
+
body: await processBody(response),
|
|
11651
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
11652
|
+
status: response.status
|
|
11653
|
+
};
|
|
11654
|
+
}
|
|
11655
|
+
if (!GITLAB_RETRYABLE_STATUSES.has(response.status)) {
|
|
11656
|
+
throw new Error(`gitbeaker: ${response.statusText}`);
|
|
11657
|
+
}
|
|
11658
|
+
lastError = new Error(`gitbeaker: ${response.statusText}`);
|
|
11659
|
+
}
|
|
11660
|
+
if (attempt === GITLAB_REQUEST_MAX_ATTEMPTS) break;
|
|
11661
|
+
const retryAfter = Number(response?.headers.get("retry-after"));
|
|
11662
|
+
const waitMs = Number.isFinite(retryAfter) && retryAfter > 0 ? retryAfter * 1e3 : GITLAB_REQUEST_BASE_BACKOFF_MS * 2 ** (attempt - 1);
|
|
11663
|
+
await delay(waitMs);
|
|
11664
|
+
}
|
|
11665
|
+
throw lastError ?? new Error("gitbeaker: request failed");
|
|
11609
11666
|
}
|
|
11610
11667
|
async function listGitlabProjectMembers({
|
|
11611
11668
|
repoUrl,
|
|
@@ -13204,7 +13261,6 @@ import { z as z31 } from "zod";
|
|
|
13204
13261
|
|
|
13205
13262
|
// src/commands/AuthManager.ts
|
|
13206
13263
|
import crypto from "crypto";
|
|
13207
|
-
import os3 from "os";
|
|
13208
13264
|
import Debug11 from "debug";
|
|
13209
13265
|
import open from "open";
|
|
13210
13266
|
|
|
@@ -14885,12 +14941,12 @@ async function uploadAiBlameCommandHandler(args) {
|
|
|
14885
14941
|
}
|
|
14886
14942
|
|
|
14887
14943
|
// src/utils/with-timeout.ts
|
|
14888
|
-
import { setTimeout as
|
|
14944
|
+
import { setTimeout as delay2 } from "timers/promises";
|
|
14889
14945
|
function withTimeout(promise, ms, label) {
|
|
14890
14946
|
const ac = new AbortController();
|
|
14891
14947
|
return Promise.race([
|
|
14892
14948
|
promise.finally(() => ac.abort()),
|
|
14893
|
-
|
|
14949
|
+
delay2(ms, void 0, { signal: ac.signal }).then(() => {
|
|
14894
14950
|
throw new Error(`${label} timed out after ${ms}ms`);
|
|
14895
14951
|
})
|
|
14896
14952
|
]);
|
|
@@ -15223,6 +15279,7 @@ async function prepareAndSendTracyRecords(client, rawRecords, workingDir, option
|
|
|
15223
15279
|
}
|
|
15224
15280
|
|
|
15225
15281
|
// src/mcp/services/types.ts
|
|
15282
|
+
import os3 from "os";
|
|
15226
15283
|
function detectIDE() {
|
|
15227
15284
|
const env3 = process.env;
|
|
15228
15285
|
if (env3["CURSOR_TRACE_ID"] || env3["CURSOR_SESSION_ID"]) return "cursor";
|
|
@@ -15243,16 +15300,41 @@ function createMcpLoginContext(trigger) {
|
|
|
15243
15300
|
ide: detectIDE()
|
|
15244
15301
|
};
|
|
15245
15302
|
}
|
|
15246
|
-
function buildLoginUrl(baseUrl, loginId,
|
|
15303
|
+
function buildLoginUrl(baseUrl, loginId, machine, context) {
|
|
15247
15304
|
const url = new URL(`${baseUrl}/${loginId}`);
|
|
15248
|
-
url.searchParams.set("hostname", hostname);
|
|
15249
|
-
|
|
15250
|
-
|
|
15251
|
-
|
|
15252
|
-
|
|
15305
|
+
url.searchParams.set("hostname", machine.hostname);
|
|
15306
|
+
if (machine.computerUser) {
|
|
15307
|
+
url.searchParams.set("computerUser", machine.computerUser);
|
|
15308
|
+
}
|
|
15309
|
+
if (machine.clientVersion) {
|
|
15310
|
+
url.searchParams.set("clientVersion", machine.clientVersion);
|
|
15311
|
+
}
|
|
15312
|
+
if (context) {
|
|
15313
|
+
url.searchParams.set("trigger", context.trigger);
|
|
15314
|
+
url.searchParams.set("source", context.source);
|
|
15315
|
+
if (context.ide) {
|
|
15316
|
+
url.searchParams.set("ide", context.ide);
|
|
15317
|
+
}
|
|
15253
15318
|
}
|
|
15254
15319
|
return url.toString();
|
|
15255
15320
|
}
|
|
15321
|
+
function getComputerUser() {
|
|
15322
|
+
try {
|
|
15323
|
+
return os3.userInfo().username || void 0;
|
|
15324
|
+
} catch {
|
|
15325
|
+
return void 0;
|
|
15326
|
+
}
|
|
15327
|
+
}
|
|
15328
|
+
function getLoginMachineInfo() {
|
|
15329
|
+
return {
|
|
15330
|
+
hostname: os3.hostname(),
|
|
15331
|
+
computerUser: getComputerUser(),
|
|
15332
|
+
clientVersion: packageJson.version
|
|
15333
|
+
};
|
|
15334
|
+
}
|
|
15335
|
+
function buildLoginBrowserUrl(baseUrl, loginId, context) {
|
|
15336
|
+
return buildLoginUrl(baseUrl, loginId, getLoginMachineInfo(), context);
|
|
15337
|
+
}
|
|
15256
15338
|
|
|
15257
15339
|
// src/commands/AuthManager.ts
|
|
15258
15340
|
var debug12 = Debug11("mobbdev:auth");
|
|
@@ -15397,7 +15479,11 @@ var _AuthManager = class _AuthManager {
|
|
|
15397
15479
|
publicKey: this.publicKey.export({ format: "pem", type: "pkcs1" }).toString()
|
|
15398
15480
|
});
|
|
15399
15481
|
const webLoginUrl = `${this.resolvedWebAppUrl}${loginPath || "/cli-login"}`;
|
|
15400
|
-
const browserUrl =
|
|
15482
|
+
const browserUrl = buildLoginBrowserUrl(
|
|
15483
|
+
webLoginUrl,
|
|
15484
|
+
this.loginId,
|
|
15485
|
+
loginContext
|
|
15486
|
+
);
|
|
15401
15487
|
this.currentBrowserUrl = browserUrl;
|
|
15402
15488
|
return browserUrl;
|
|
15403
15489
|
} catch (error) {
|
|
@@ -16435,8 +16521,8 @@ if (typeof __filename !== "undefined") {
|
|
|
16435
16521
|
}
|
|
16436
16522
|
var costumeRequire = createRequire(moduleUrl);
|
|
16437
16523
|
var getCheckmarxPath = () => {
|
|
16438
|
-
const
|
|
16439
|
-
const cxFileName =
|
|
16524
|
+
const os19 = type();
|
|
16525
|
+
const cxFileName = os19 === "Windows_NT" ? "cx.exe" : "cx";
|
|
16440
16526
|
try {
|
|
16441
16527
|
return costumeRequire.resolve(`.bin/${cxFileName}`);
|
|
16442
16528
|
} catch (e) {
|
|
@@ -19721,7 +19807,7 @@ function createLogger(config2) {
|
|
|
19721
19807
|
|
|
19722
19808
|
// src/features/claude_code/hook_logger.ts
|
|
19723
19809
|
var DD_RUM_TOKEN = true ? "pubf59c0182545bfb4c299175119f1abf9b" : "";
|
|
19724
|
-
var CLI_VERSION = true ? "1.4.
|
|
19810
|
+
var CLI_VERSION = true ? "1.4.26" : "unknown";
|
|
19725
19811
|
var NAMESPACE = "mobbdev-claude-code-hook-logs";
|
|
19726
19812
|
var claudeCodeVersion;
|
|
19727
19813
|
function buildDdTags() {
|
|
@@ -21246,7 +21332,7 @@ var logDebug = (message, data) => logger2.log(message, "debug", data);
|
|
|
21246
21332
|
var log = logger2.log.bind(logger2);
|
|
21247
21333
|
|
|
21248
21334
|
// src/mcp/services/McpGQLClient.ts
|
|
21249
|
-
import
|
|
21335
|
+
import os9 from "os";
|
|
21250
21336
|
init_client_generates();
|
|
21251
21337
|
init_configs();
|
|
21252
21338
|
|
|
@@ -21628,85 +21714,20 @@ var McpGQLClient = class extends GQLClient {
|
|
|
21628
21714
|
if (!userEmail) {
|
|
21629
21715
|
throw new Error("User email not found");
|
|
21630
21716
|
}
|
|
21631
|
-
const
|
|
21632
|
-
const
|
|
21633
|
-
|
|
21634
|
-
projectName
|
|
21635
|
-
});
|
|
21636
|
-
const orgAndProjectRes = await this._clientSdk.getLastOrgAndNamedProject({
|
|
21637
|
-
email: userEmail,
|
|
21638
|
-
projectName
|
|
21639
|
-
});
|
|
21640
|
-
logDebug("[GraphQL] getLastOrgAndNamedProject successful", {
|
|
21641
|
-
result: orgAndProjectRes
|
|
21642
|
-
});
|
|
21643
|
-
if (!orgAndProjectRes.user?.[0]?.userOrganizationsAndUserOrganizationRoles?.[0]?.organization?.id) {
|
|
21717
|
+
const orgRes = await this._clientSdk.getLastOrg({ email: userEmail });
|
|
21718
|
+
const organizationId = orgRes.user?.[0]?.userOrganizationsAndUserOrganizationRoles?.[0]?.organization?.id;
|
|
21719
|
+
if (!organizationId) {
|
|
21644
21720
|
throw new Error(
|
|
21645
|
-
`The user with email:${userEmail}
|
|
21721
|
+
`The user with email:${userEmail} is not associated with any organization`
|
|
21646
21722
|
);
|
|
21647
21723
|
}
|
|
21648
|
-
const
|
|
21649
|
-
const projectId =
|
|
21650
|
-
if (projectId) {
|
|
21651
|
-
|
|
21652
|
-
projectId,
|
|
21653
|
-
projectName
|
|
21654
|
-
});
|
|
21655
|
-
return projectId;
|
|
21656
|
-
}
|
|
21657
|
-
logDebug("[GraphQL] Project not found, creating new project", {
|
|
21658
|
-
organizationId: organization.id,
|
|
21659
|
-
projectName
|
|
21660
|
-
});
|
|
21661
|
-
try {
|
|
21662
|
-
const createdProject = await this._clientSdk.CreateProject({
|
|
21663
|
-
organizationId: organization.id,
|
|
21664
|
-
projectName
|
|
21665
|
-
});
|
|
21666
|
-
logDebug("[GraphQL] CreateProject successful", {
|
|
21667
|
-
result: createdProject
|
|
21668
|
-
});
|
|
21669
|
-
return createdProject.createProject.projectId;
|
|
21670
|
-
} catch (createError) {
|
|
21671
|
-
const errorMessage3 = createError instanceof Error ? createError.message : String(createError);
|
|
21672
|
-
const isConstraintViolation = errorMessage3.includes(
|
|
21673
|
-
"duplicate key value violates unique constraint"
|
|
21674
|
-
) && errorMessage3.includes("project_name_organization_id_key");
|
|
21675
|
-
if (isConstraintViolation) {
|
|
21676
|
-
logDebug(
|
|
21677
|
-
"[GraphQL] Project creation failed due to constraint violation, retrying fetch",
|
|
21678
|
-
{
|
|
21679
|
-
organizationId: organization.id,
|
|
21680
|
-
projectName,
|
|
21681
|
-
error: errorMessage3
|
|
21682
|
-
}
|
|
21683
|
-
);
|
|
21684
|
-
const retryOrgAndProjectRes = await this._clientSdk.getLastOrgAndNamedProject({
|
|
21685
|
-
email: userEmail,
|
|
21686
|
-
projectName
|
|
21687
|
-
});
|
|
21688
|
-
const retryProjectId = retryOrgAndProjectRes.user?.[0]?.userOrganizationsAndUserOrganizationRoles?.[0]?.organization?.projects?.[0]?.id;
|
|
21689
|
-
if (retryProjectId) {
|
|
21690
|
-
logDebug(
|
|
21691
|
-
"[GraphQL] Successfully found existing project after constraint violation",
|
|
21692
|
-
{
|
|
21693
|
-
projectId: retryProjectId,
|
|
21694
|
-
projectName
|
|
21695
|
-
}
|
|
21696
|
-
);
|
|
21697
|
-
return retryProjectId;
|
|
21698
|
-
}
|
|
21699
|
-
logError(
|
|
21700
|
-
"[GraphQL] Failed to find project even after constraint violation retry",
|
|
21701
|
-
{
|
|
21702
|
-
organizationId: organization.id,
|
|
21703
|
-
projectName,
|
|
21704
|
-
retryResult: retryOrgAndProjectRes
|
|
21705
|
-
}
|
|
21706
|
-
);
|
|
21707
|
-
}
|
|
21708
|
-
throw createError;
|
|
21724
|
+
const mvsRes = await this._clientSdk.getMvsProject({ organizationId });
|
|
21725
|
+
const projectId = mvsRes.getMvsProject?.projectId;
|
|
21726
|
+
if (!projectId) {
|
|
21727
|
+
throw new Error("Failed to resolve the MVS project");
|
|
21709
21728
|
}
|
|
21729
|
+
logDebug("[GraphQL] Resolved MVS project", { projectId });
|
|
21730
|
+
return projectId;
|
|
21710
21731
|
} catch (e) {
|
|
21711
21732
|
logError("[GraphQL] getProjectId failed", {
|
|
21712
21733
|
error: e,
|
|
@@ -21803,6 +21824,26 @@ var McpGQLClient = class extends GQLClient {
|
|
|
21803
21824
|
logDebug("[GraphQL] No auto-applied fixes to update status");
|
|
21804
21825
|
}
|
|
21805
21826
|
}
|
|
21827
|
+
/** Best-effort: a telemetry failure must never break a scan/fix, so errors are swallowed. */
|
|
21828
|
+
async logMvsEvent(params) {
|
|
21829
|
+
try {
|
|
21830
|
+
await this._clientSdk.LogMvsEvent({
|
|
21831
|
+
eventType: params.eventType,
|
|
21832
|
+
fixReportId: params.fixReportId ?? null,
|
|
21833
|
+
projectId: params.projectId ?? null,
|
|
21834
|
+
repoUrl: params.repoUrl ?? null,
|
|
21835
|
+
riskCount: params.riskCount ?? null,
|
|
21836
|
+
computerName: os9.hostname(),
|
|
21837
|
+
computerUser: getComputerUser() ?? null,
|
|
21838
|
+
clientVersion: packageJson.version
|
|
21839
|
+
});
|
|
21840
|
+
} catch (error) {
|
|
21841
|
+
logDebug("[GraphQL] logMvsEvent failed (ignored)", {
|
|
21842
|
+
eventType: params.eventType,
|
|
21843
|
+
error: error.message
|
|
21844
|
+
});
|
|
21845
|
+
}
|
|
21846
|
+
}
|
|
21806
21847
|
async getMvsAutoFixSettings() {
|
|
21807
21848
|
try {
|
|
21808
21849
|
const envOverride = process.env["MVS_AUTO_FIX"];
|
|
@@ -22076,7 +22117,7 @@ async function createAuthenticatedMcpGQLClient({
|
|
|
22076
22117
|
// src/mcp/services/McpUsageService/host.ts
|
|
22077
22118
|
import { execSync as execSync2 } from "child_process";
|
|
22078
22119
|
import fs15 from "fs";
|
|
22079
|
-
import
|
|
22120
|
+
import os10 from "os";
|
|
22080
22121
|
import path25 from "path";
|
|
22081
22122
|
var IDEs = ["cursor", "windsurf", "webstorm", "vscode", "claude"];
|
|
22082
22123
|
var runCommand = (cmd) => {
|
|
@@ -22091,7 +22132,7 @@ var gitInfo = {
|
|
|
22091
22132
|
email: runCommand("git config user.email")
|
|
22092
22133
|
};
|
|
22093
22134
|
var getClaudeWorkspacePaths = () => {
|
|
22094
|
-
const home =
|
|
22135
|
+
const home = os10.homedir();
|
|
22095
22136
|
const claudeIdePath = path25.join(home, ".claude", "ide");
|
|
22096
22137
|
const workspacePaths = [];
|
|
22097
22138
|
if (!fs15.existsSync(claudeIdePath)) {
|
|
@@ -22120,7 +22161,7 @@ var getClaudeWorkspacePaths = () => {
|
|
|
22120
22161
|
return workspacePaths;
|
|
22121
22162
|
};
|
|
22122
22163
|
var getMCPConfigPaths = (hostName) => {
|
|
22123
|
-
const home =
|
|
22164
|
+
const home = os10.homedir();
|
|
22124
22165
|
const currentDir = process.env["WORKSPACE_FOLDER_PATHS"] || process.env["PWD"] || process.cwd();
|
|
22125
22166
|
switch (hostName.toLowerCase()) {
|
|
22126
22167
|
case "cursor":
|
|
@@ -22210,7 +22251,7 @@ var readMCPConfig = (hostName) => {
|
|
|
22210
22251
|
};
|
|
22211
22252
|
var getRunningProcesses = () => {
|
|
22212
22253
|
try {
|
|
22213
|
-
return
|
|
22254
|
+
return os10.platform() === "win32" ? execSync2("tasklist", { encoding: "utf8" }) : execSync2("ps aux", { encoding: "utf8" });
|
|
22214
22255
|
} catch {
|
|
22215
22256
|
return "";
|
|
22216
22257
|
}
|
|
@@ -22285,7 +22326,7 @@ var versionCommands = {
|
|
|
22285
22326
|
}
|
|
22286
22327
|
};
|
|
22287
22328
|
var getProcessInfo = (pid) => {
|
|
22288
|
-
const platform2 =
|
|
22329
|
+
const platform2 = os10.platform();
|
|
22289
22330
|
try {
|
|
22290
22331
|
if (platform2 === "linux" || platform2 === "darwin") {
|
|
22291
22332
|
const output = execSync2(`ps -o pid=,ppid=,comm= -p ${pid}`, {
|
|
@@ -22404,7 +22445,7 @@ var getHostInfo = (additionalMcpList) => {
|
|
|
22404
22445
|
const config2 = allConfigs[ide] || null;
|
|
22405
22446
|
const ideName = ide.charAt(0).toUpperCase() + ide.slice(1) || "Unknown";
|
|
22406
22447
|
let ideVersion = "Unknown";
|
|
22407
|
-
const platform2 =
|
|
22448
|
+
const platform2 = os10.platform();
|
|
22408
22449
|
const cmds = versionCommands[ideName]?.[platform2] ?? [];
|
|
22409
22450
|
for (const cmd of cmds) {
|
|
22410
22451
|
try {
|
|
@@ -22437,14 +22478,14 @@ var getHostInfo = (additionalMcpList) => {
|
|
|
22437
22478
|
|
|
22438
22479
|
// src/mcp/services/McpUsageService/McpUsageService.ts
|
|
22439
22480
|
import fetch6 from "node-fetch";
|
|
22440
|
-
import
|
|
22481
|
+
import os12 from "os";
|
|
22441
22482
|
import { v4 as uuidv42, v5 as uuidv5 } from "uuid";
|
|
22442
22483
|
init_configs();
|
|
22443
22484
|
|
|
22444
22485
|
// src/mcp/services/McpUsageService/system.ts
|
|
22445
22486
|
init_configs();
|
|
22446
22487
|
import fs16 from "fs";
|
|
22447
|
-
import
|
|
22488
|
+
import os11 from "os";
|
|
22448
22489
|
import path26 from "path";
|
|
22449
22490
|
var MAX_DEPTH = 2;
|
|
22450
22491
|
var patterns = ["mcp", "claude"];
|
|
@@ -22479,8 +22520,8 @@ var searchDir = async (dir, depth = 0) => {
|
|
|
22479
22520
|
};
|
|
22480
22521
|
var findSystemMCPConfigs = async () => {
|
|
22481
22522
|
try {
|
|
22482
|
-
const home =
|
|
22483
|
-
const platform2 =
|
|
22523
|
+
const home = os11.homedir();
|
|
22524
|
+
const platform2 = os11.platform();
|
|
22484
22525
|
const knownDirs = platform2 === "win32" ? [
|
|
22485
22526
|
path26.join(home, ".cursor"),
|
|
22486
22527
|
path26.join(home, "Documents"),
|
|
@@ -22552,7 +22593,7 @@ var McpUsageService = class {
|
|
|
22552
22593
|
generateHostId() {
|
|
22553
22594
|
const stored = configStore.get(this.configKey);
|
|
22554
22595
|
if (stored?.mcpHostId) return stored.mcpHostId;
|
|
22555
|
-
const interfaces =
|
|
22596
|
+
const interfaces = os12.networkInterfaces();
|
|
22556
22597
|
const macs = [];
|
|
22557
22598
|
for (const iface of Object.values(interfaces)) {
|
|
22558
22599
|
if (!iface) continue;
|
|
@@ -22560,7 +22601,7 @@ var McpUsageService = class {
|
|
|
22560
22601
|
if (net.mac && net.mac !== "00:00:00:00:00:00") macs.push(net.mac);
|
|
22561
22602
|
}
|
|
22562
22603
|
}
|
|
22563
|
-
const macString = macs.length ? macs.sort().join(",") : `${
|
|
22604
|
+
const macString = macs.length ? macs.sort().join(",") : `${os12.hostname()}-${uuidv42()}`;
|
|
22564
22605
|
const hostId = uuidv5(macString, uuidv5.DNS);
|
|
22565
22606
|
logDebug("[UsageService] Generated new host ID", { hostId });
|
|
22566
22607
|
return hostId;
|
|
@@ -22583,7 +22624,7 @@ var McpUsageService = class {
|
|
|
22583
22624
|
mcpHostId,
|
|
22584
22625
|
organizationId,
|
|
22585
22626
|
mcpVersion: packageJson.version,
|
|
22586
|
-
mcpOsName:
|
|
22627
|
+
mcpOsName: os12.platform(),
|
|
22587
22628
|
mcps: JSON.stringify(mcps),
|
|
22588
22629
|
status,
|
|
22589
22630
|
userName: user.name,
|
|
@@ -24904,7 +24945,7 @@ For a complete security audit workflow, use the \`full-security-audit\` prompt.
|
|
|
24904
24945
|
|
|
24905
24946
|
// src/mcp/services/McpDetectionService/CursorMcpDetectionService.ts
|
|
24906
24947
|
import * as fs19 from "fs";
|
|
24907
|
-
import * as
|
|
24948
|
+
import * as os14 from "os";
|
|
24908
24949
|
import * as path28 from "path";
|
|
24909
24950
|
|
|
24910
24951
|
// src/mcp/services/McpDetectionService/BaseMcpDetectionService.ts
|
|
@@ -24915,11 +24956,11 @@ import * as path27 from "path";
|
|
|
24915
24956
|
|
|
24916
24957
|
// src/mcp/services/McpDetectionService/McpDetectionServiceUtils.ts
|
|
24917
24958
|
import * as fs17 from "fs";
|
|
24918
|
-
import * as
|
|
24959
|
+
import * as os13 from "os";
|
|
24919
24960
|
|
|
24920
24961
|
// src/mcp/services/McpDetectionService/VscodeMcpDetectionService.ts
|
|
24921
24962
|
import * as fs20 from "fs";
|
|
24922
|
-
import * as
|
|
24963
|
+
import * as os15 from "os";
|
|
24923
24964
|
import * as path29 from "path";
|
|
24924
24965
|
|
|
24925
24966
|
// src/mcp/tools/checkForNewAvailableFixes/CheckForNewAvailableFixesTool.ts
|
|
@@ -27625,6 +27666,7 @@ var PatchApplicationService = class {
|
|
|
27625
27666
|
// src/mcp/services/ScanFiles.ts
|
|
27626
27667
|
init_client_generates();
|
|
27627
27668
|
init_GitService();
|
|
27669
|
+
import os16 from "os";
|
|
27628
27670
|
init_configs();
|
|
27629
27671
|
|
|
27630
27672
|
// src/mcp/services/FileOperations.ts
|
|
@@ -27898,7 +27940,12 @@ var executeSecurityScan = async ({
|
|
|
27898
27940
|
isFullScan: !!isAllDetectionRulesScan,
|
|
27899
27941
|
sha,
|
|
27900
27942
|
scanContext,
|
|
27901
|
-
fileCount
|
|
27943
|
+
fileCount,
|
|
27944
|
+
// MVS device attribution: a developer appears in the MVS Developers grid
|
|
27945
|
+
// from scanning alone (no fresh login needed).
|
|
27946
|
+
computerName: os16.hostname(),
|
|
27947
|
+
computerUser: getComputerUser(),
|
|
27948
|
+
clientVersion: packageJson.version
|
|
27902
27949
|
};
|
|
27903
27950
|
logInfo(`[${scanContext}] Submitting vulnerability report`);
|
|
27904
27951
|
logDebug(`[${scanContext}] Submit vulnerability report variables`, {
|
|
@@ -29023,6 +29070,7 @@ var _ScanAndFixVulnerabilitiesService = class _ScanAndFixVulnerabilitiesService
|
|
|
29023
29070
|
isExpired: this.storedFixReportId ? this.isFixReportIdExpired() : null
|
|
29024
29071
|
});
|
|
29025
29072
|
let fixReportId = this.storedFixReportId;
|
|
29073
|
+
let didScan = false;
|
|
29026
29074
|
if (!fixReportId || isRescan || this.isFixReportIdExpired()) {
|
|
29027
29075
|
logInfo("Scanning files");
|
|
29028
29076
|
this.reset();
|
|
@@ -29034,6 +29082,7 @@ var _ScanAndFixVulnerabilitiesService = class _ScanAndFixVulnerabilitiesService
|
|
|
29034
29082
|
scanContext: ScanContext.USER_REQUEST
|
|
29035
29083
|
});
|
|
29036
29084
|
fixReportId = scanResult.fixReportId;
|
|
29085
|
+
didScan = true;
|
|
29037
29086
|
} else {
|
|
29038
29087
|
logInfo("Using stored fixReportId");
|
|
29039
29088
|
}
|
|
@@ -29046,6 +29095,23 @@ var _ScanAndFixVulnerabilitiesService = class _ScanAndFixVulnerabilitiesService
|
|
|
29046
29095
|
limit: effectiveLimit
|
|
29047
29096
|
});
|
|
29048
29097
|
logInfo(`Found ${fixes.totalCount} fixes`);
|
|
29098
|
+
if (fixReportId && effectiveOffset === 0 && fixes.totalCount > 0) {
|
|
29099
|
+
if (didScan) {
|
|
29100
|
+
await this.gqlClient.logMvsEvent({
|
|
29101
|
+
eventType: "RISK_DETECTED",
|
|
29102
|
+
fixReportId,
|
|
29103
|
+
riskCount: fixes.totalCount
|
|
29104
|
+
});
|
|
29105
|
+
}
|
|
29106
|
+
await this.gqlClient.logMvsEvent({
|
|
29107
|
+
eventType: "FIXES_VIEWED",
|
|
29108
|
+
fixReportId,
|
|
29109
|
+
// Count of fixes shown, so the Event Log row mirrors Fixable Issues
|
|
29110
|
+
// Detected ("N issues"). Not summed into the Fixable Issues KPI,
|
|
29111
|
+
// which only counts RISK_DETECTED.
|
|
29112
|
+
riskCount: fixes.totalCount
|
|
29113
|
+
});
|
|
29114
|
+
}
|
|
29049
29115
|
if (fixes.totalCount > 0) {
|
|
29050
29116
|
this.storedFixReportId = fixReportId;
|
|
29051
29117
|
this.fixReportIdTimestamp = Date.now();
|
|
@@ -29842,18 +29908,18 @@ async function getGrpcClient(port, csrf3) {
|
|
|
29842
29908
|
|
|
29843
29909
|
// src/features/codeium_intellij/parse_intellij_logs.ts
|
|
29844
29910
|
import fs27 from "fs";
|
|
29845
|
-
import
|
|
29911
|
+
import os17 from "os";
|
|
29846
29912
|
import path35 from "path";
|
|
29847
29913
|
function getLogsDir() {
|
|
29848
29914
|
if (process.platform === "darwin") {
|
|
29849
|
-
return path35.join(
|
|
29915
|
+
return path35.join(os17.homedir(), "Library/Logs/JetBrains");
|
|
29850
29916
|
} else if (process.platform === "win32") {
|
|
29851
29917
|
return path35.join(
|
|
29852
|
-
process.env["LOCALAPPDATA"] || path35.join(
|
|
29918
|
+
process.env["LOCALAPPDATA"] || path35.join(os17.homedir(), "AppData/Local"),
|
|
29853
29919
|
"JetBrains"
|
|
29854
29920
|
);
|
|
29855
29921
|
} else {
|
|
29856
|
-
return path35.join(
|
|
29922
|
+
return path35.join(os17.homedir(), ".cache/JetBrains");
|
|
29857
29923
|
}
|
|
29858
29924
|
}
|
|
29859
29925
|
function parseIdeLogDir(ideLogDir) {
|
|
@@ -30076,11 +30142,11 @@ function processChatStepCodeAction(step) {
|
|
|
30076
30142
|
|
|
30077
30143
|
// src/features/codeium_intellij/install_hook.ts
|
|
30078
30144
|
import fsPromises5 from "fs/promises";
|
|
30079
|
-
import
|
|
30145
|
+
import os18 from "os";
|
|
30080
30146
|
import path36 from "path";
|
|
30081
30147
|
import chalk14 from "chalk";
|
|
30082
30148
|
function getCodeiumHooksPath() {
|
|
30083
|
-
return path36.join(
|
|
30149
|
+
return path36.join(os18.homedir(), ".codeium", "hooks.json");
|
|
30084
30150
|
}
|
|
30085
30151
|
async function readCodeiumHooks() {
|
|
30086
30152
|
const hooksPath = getCodeiumHooksPath();
|