mobbdev 1.3.5 → 1.4.0

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.
@@ -56,32 +56,22 @@ declare const PromptItemZ: z.ZodObject<{
56
56
  name: string;
57
57
  parameters: string;
58
58
  result: string;
59
- accepted?: boolean | undefined;
60
59
  rawArguments?: string | undefined;
60
+ accepted?: boolean | undefined;
61
61
  mcpServer?: string | undefined;
62
62
  mcpToolName?: string | undefined;
63
63
  }, {
64
64
  name: string;
65
65
  parameters: string;
66
66
  result: string;
67
- accepted?: boolean | undefined;
68
67
  rawArguments?: string | undefined;
68
+ accepted?: boolean | undefined;
69
69
  mcpServer?: string | undefined;
70
70
  mcpToolName?: string | undefined;
71
71
  }>>;
72
72
  }, "strip", z.ZodTypeAny, {
73
73
  type: "USER_PROMPT" | "AI_RESPONSE" | "TOOL_EXECUTION" | "AI_THINKING" | "MCP_TOOL_CALL";
74
- tool?: {
75
- name: string;
76
- parameters: string;
77
- result: string;
78
- accepted?: boolean | undefined;
79
- rawArguments?: string | undefined;
80
- mcpServer?: string | undefined;
81
- mcpToolName?: string | undefined;
82
- } | undefined;
83
74
  date?: Date | undefined;
84
- text?: string | undefined;
85
75
  attachedFiles?: {
86
76
  relativePath: string;
87
77
  startLine?: number | undefined;
@@ -90,19 +80,19 @@ declare const PromptItemZ: z.ZodObject<{
90
80
  inputCount: number;
91
81
  outputCount: number;
92
82
  } | undefined;
93
- }, {
94
- type: "USER_PROMPT" | "AI_RESPONSE" | "TOOL_EXECUTION" | "AI_THINKING" | "MCP_TOOL_CALL";
83
+ text?: string | undefined;
95
84
  tool?: {
96
85
  name: string;
97
86
  parameters: string;
98
87
  result: string;
99
- accepted?: boolean | undefined;
100
88
  rawArguments?: string | undefined;
89
+ accepted?: boolean | undefined;
101
90
  mcpServer?: string | undefined;
102
91
  mcpToolName?: string | undefined;
103
92
  } | undefined;
93
+ }, {
94
+ type: "USER_PROMPT" | "AI_RESPONSE" | "TOOL_EXECUTION" | "AI_THINKING" | "MCP_TOOL_CALL";
104
95
  date?: Date | undefined;
105
- text?: string | undefined;
106
96
  attachedFiles?: {
107
97
  relativePath: string;
108
98
  startLine?: number | undefined;
@@ -111,6 +101,16 @@ declare const PromptItemZ: z.ZodObject<{
111
101
  inputCount: number;
112
102
  outputCount: number;
113
103
  } | undefined;
104
+ text?: string | undefined;
105
+ tool?: {
106
+ name: string;
107
+ parameters: string;
108
+ result: string;
109
+ rawArguments?: string | undefined;
110
+ accepted?: boolean | undefined;
111
+ mcpServer?: string | undefined;
112
+ mcpToolName?: string | undefined;
113
+ } | undefined;
114
114
  }>;
115
115
  type PromptItem = z.infer<typeof PromptItemZ>;
116
116
  declare const PromptItemArrayZ: z.ZodArray<z.ZodObject<{
@@ -149,32 +149,22 @@ declare const PromptItemArrayZ: z.ZodArray<z.ZodObject<{
149
149
  name: string;
150
150
  parameters: string;
151
151
  result: string;
152
- accepted?: boolean | undefined;
153
152
  rawArguments?: string | undefined;
153
+ accepted?: boolean | undefined;
154
154
  mcpServer?: string | undefined;
155
155
  mcpToolName?: string | undefined;
156
156
  }, {
157
157
  name: string;
158
158
  parameters: string;
159
159
  result: string;
160
- accepted?: boolean | undefined;
161
160
  rawArguments?: string | undefined;
161
+ accepted?: boolean | undefined;
162
162
  mcpServer?: string | undefined;
163
163
  mcpToolName?: string | undefined;
164
164
  }>>;
165
165
  }, "strip", z.ZodTypeAny, {
166
166
  type: "USER_PROMPT" | "AI_RESPONSE" | "TOOL_EXECUTION" | "AI_THINKING" | "MCP_TOOL_CALL";
167
- tool?: {
168
- name: string;
169
- parameters: string;
170
- result: string;
171
- accepted?: boolean | undefined;
172
- rawArguments?: string | undefined;
173
- mcpServer?: string | undefined;
174
- mcpToolName?: string | undefined;
175
- } | undefined;
176
167
  date?: Date | undefined;
177
- text?: string | undefined;
178
168
  attachedFiles?: {
179
169
  relativePath: string;
180
170
  startLine?: number | undefined;
@@ -183,19 +173,19 @@ declare const PromptItemArrayZ: z.ZodArray<z.ZodObject<{
183
173
  inputCount: number;
184
174
  outputCount: number;
185
175
  } | undefined;
186
- }, {
187
- type: "USER_PROMPT" | "AI_RESPONSE" | "TOOL_EXECUTION" | "AI_THINKING" | "MCP_TOOL_CALL";
176
+ text?: string | undefined;
188
177
  tool?: {
189
178
  name: string;
190
179
  parameters: string;
191
180
  result: string;
192
- accepted?: boolean | undefined;
193
181
  rawArguments?: string | undefined;
182
+ accepted?: boolean | undefined;
194
183
  mcpServer?: string | undefined;
195
184
  mcpToolName?: string | undefined;
196
185
  } | undefined;
186
+ }, {
187
+ type: "USER_PROMPT" | "AI_RESPONSE" | "TOOL_EXECUTION" | "AI_THINKING" | "MCP_TOOL_CALL";
197
188
  date?: Date | undefined;
198
- text?: string | undefined;
199
189
  attachedFiles?: {
200
190
  relativePath: string;
201
191
  startLine?: number | undefined;
@@ -204,6 +194,16 @@ declare const PromptItemArrayZ: z.ZodArray<z.ZodObject<{
204
194
  inputCount: number;
205
195
  outputCount: number;
206
196
  } | undefined;
197
+ text?: string | undefined;
198
+ tool?: {
199
+ name: string;
200
+ parameters: string;
201
+ result: string;
202
+ rawArguments?: string | undefined;
203
+ accepted?: boolean | undefined;
204
+ mcpServer?: string | undefined;
205
+ mcpToolName?: string | undefined;
206
+ } | undefined;
207
207
  }>, "many">;
208
208
  type PromptItemArray = z.infer<typeof PromptItemArrayZ>;
209
209
  /**
@@ -129,10 +129,13 @@ function getSdk(client, withWrapper = defaultWrapper) {
129
129
  },
130
130
  ScanSkill(variables, requestHeaders, signal) {
131
131
  return withWrapper((wrappedRequestHeaders) => client.request({ document: ScanSkillDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "ScanSkill", "mutation", variables);
132
+ },
133
+ SkillVerdictsByMd5(variables, requestHeaders, signal) {
134
+ return withWrapper((wrappedRequestHeaders) => client.request({ document: SkillVerdictsByMd5Document, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "SkillVerdictsByMd5", "query", variables);
132
135
  }
133
136
  };
134
137
  }
135
- 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, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, defaultWrapper;
138
+ 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, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, SkillVerdictsByMd5Document, defaultWrapper;
136
139
  var init_client_generates = __esm({
137
140
  "src/features/analysis/scm/generates/client_generates.ts"() {
138
141
  "use strict";
@@ -326,6 +329,7 @@ var init_client_generates = __esm({
326
329
  IssueType_Enum2["SystemExitShouldReraise"] = "SYSTEM_EXIT_SHOULD_RERAISE";
327
330
  IssueType_Enum2["SystemInformationLeak"] = "SYSTEM_INFORMATION_LEAK";
328
331
  IssueType_Enum2["SystemInformationLeakExternal"] = "SYSTEM_INFORMATION_LEAK_EXTERNAL";
332
+ IssueType_Enum2["TaintedNumericCast"] = "TAINTED_NUMERIC_CAST";
329
333
  IssueType_Enum2["TarSlip"] = "TAR_SLIP";
330
334
  IssueType_Enum2["TrustBoundaryViolation"] = "TRUST_BOUNDARY_VIOLATION";
331
335
  IssueType_Enum2["TypeConfusion"] = "TYPE_CONFUSION";
@@ -1264,6 +1268,18 @@ var init_client_generates = __esm({
1264
1268
  cached
1265
1269
  summary
1266
1270
  }
1271
+ }
1272
+ `;
1273
+ SkillVerdictsByMd5Document = `
1274
+ query SkillVerdictsByMd5($md5s: [String!]!) {
1275
+ skillVerdictsByMd5(md5s: $md5s) {
1276
+ md5
1277
+ verdict
1278
+ summary
1279
+ scannerName
1280
+ scannerVersion
1281
+ scannedAt
1282
+ }
1267
1283
  }
1268
1284
  `;
1269
1285
  defaultWrapper = (action, _operationName, _operationType, _variables) => action();
@@ -1758,7 +1774,8 @@ var init_getIssueType = __esm({
1758
1774
  ["DJANGO_BLANK_FIELD_NEEDS_NULL_OR_DEFAULT" /* DjangoBlankFieldNeedsNullOrDefault */]: "Django Blank Field Needs Null or Default",
1759
1775
  ["REDUNDANT_NIL_ERROR_CHECK" /* RedundantNilErrorCheck */]: "Redundant Nil Error Check",
1760
1776
  ["MISSING_WORKFLOW_PERMISSIONS" /* MissingWorkflowPermissions */]: "Missing Workflow Permissions",
1761
- ["EXCESSIVE_SECRETS_EXPOSURE" /* ExcessiveSecretsExposure */]: "Excessive Secrets Exposure"
1777
+ ["EXCESSIVE_SECRETS_EXPOSURE" /* ExcessiveSecretsExposure */]: "Excessive Secrets Exposure",
1778
+ ["TAINTED_NUMERIC_CAST" /* TaintedNumericCast */]: "Tainted Numeric Cast"
1762
1779
  };
1763
1780
  issueTypeZ = z5.nativeEnum(IssueType_Enum);
1764
1781
  getIssueTypeFriendlyString = (issueType) => {
@@ -4924,7 +4941,8 @@ var fixDetailsData = {
4924
4941
  ["DJANGO_BLANK_FIELD_NEEDS_NULL_OR_DEFAULT" /* DjangoBlankFieldNeedsNullOrDefault */]: void 0,
4925
4942
  ["REDUNDANT_NIL_ERROR_CHECK" /* RedundantNilErrorCheck */]: void 0,
4926
4943
  ["MISSING_WORKFLOW_PERMISSIONS" /* MissingWorkflowPermissions */]: void 0,
4927
- ["EXCESSIVE_SECRETS_EXPOSURE" /* ExcessiveSecretsExposure */]: void 0
4944
+ ["EXCESSIVE_SECRETS_EXPOSURE" /* ExcessiveSecretsExposure */]: void 0,
4945
+ ["TAINTED_NUMERIC_CAST" /* TaintedNumericCast */]: void 0
4928
4946
  };
4929
4947
 
4930
4948
  // src/features/analysis/scm/shared/src/commitDescriptionMarkup.ts
@@ -6369,6 +6387,17 @@ var openRedirect3 = {
6369
6387
  }
6370
6388
  };
6371
6389
 
6390
+ // src/features/analysis/scm/shared/src/storedQuestionData/python/ssrf.ts
6391
+ var ssrf5 = {
6392
+ domainsAllowlist: {
6393
+ content: () => "Allowed URL prefixes",
6394
+ description: () => `The security risk of this issue is the ability of an attacker to provide input that shoots HTTP requests from your server to arbitrary URLs, including internal ones, like \`https://admin.mycompany.com\`
6395
+ &nbsp;
6396
+ &nbsp; To eliminate the risk and fix the issue, check out your app logic and make a whitelist of URLs this API should be allowed to call.`,
6397
+ guidance: () => ""
6398
+ }
6399
+ };
6400
+
6372
6401
  // src/features/analysis/scm/shared/src/storedQuestionData/python/uncheckedLoopCondition.ts
6373
6402
  var uncheckedLoopCondition3 = {
6374
6403
  loopLimit: {
@@ -6390,7 +6419,8 @@ var vulnerabilities14 = {
6390
6419
  ["OPEN_REDIRECT" /* OpenRedirect */]: openRedirect3,
6391
6420
  ["UNCHECKED_LOOP_CONDITION" /* UncheckedLoopCondition */]: uncheckedLoopCondition3,
6392
6421
  ["DUPLICATED_STRINGS" /* DuplicatedStrings */]: duplicatedStrings2,
6393
- ["MISSING_ENCODING_FILE_OPEN" /* MissingEncodingFileOpen */]: missingEncoding
6422
+ ["MISSING_ENCODING_FILE_OPEN" /* MissingEncodingFileOpen */]: missingEncoding,
6423
+ ["SSRF" /* Ssrf */]: ssrf5
6394
6424
  };
6395
6425
  var python_default2 = vulnerabilities14;
6396
6426
 
@@ -6601,6 +6631,15 @@ var BitbucketParseResultZ = z21.object({
6601
6631
  repoName: z21.string(),
6602
6632
  hostname: z21.literal(BITBUCKET_HOSTNAME)
6603
6633
  });
6634
+ var UserWorkspacePermissionsRepositoriesResponseZ = z21.object({
6635
+ values: z21.array(
6636
+ z21.object({
6637
+ repository: z21.object({
6638
+ full_name: z21.string().optional()
6639
+ }).optional()
6640
+ })
6641
+ ).optional()
6642
+ });
6604
6643
 
6605
6644
  // src/features/analysis/scm/bitbucket/BitbucketSCMLib.ts
6606
6645
  import { setTimeout as setTimeout3 } from "timers/promises";
@@ -7209,6 +7248,10 @@ var GQLClient = class {
7209
7248
  async scanSkill(variables) {
7210
7249
  return await this._clientSdk.ScanSkill(variables);
7211
7250
  }
7251
+ // T-467 — batched verdict lookup for the client-side quarantine check.
7252
+ async skillVerdictsByMd5(md5s) {
7253
+ return await this._clientSdk.SkillVerdictsByMd5({ md5s });
7254
+ }
7212
7255
  };
7213
7256
 
7214
7257
  // src/features/analysis/graphql/tracy-batch-upload.ts
@@ -7320,13 +7363,13 @@ function maskString(str, showStart = 2, showEnd = 2) {
7320
7363
  }
7321
7364
  return str.slice(0, showStart) + "*".repeat(str.length - showStart - showEnd) + str.slice(-showEnd);
7322
7365
  }
7323
- async function sanitizeDataWithCounts(obj) {
7366
+ async function sanitizeDataWithCounts(obj, options) {
7324
7367
  const counts = {
7325
7368
  detections: { total: 0, high: 0, medium: 0, low: 0 }
7326
7369
  };
7327
7370
  const MAX_SCAN_LENGTH = 1e5;
7328
7371
  const sanitizeString = async (str) => {
7329
- if (str.length > MAX_SCAN_LENGTH) {
7372
+ if (!options?.noSizeLimit && str.length > MAX_SCAN_LENGTH) {
7330
7373
  return str;
7331
7374
  }
7332
7375
  let result = str;