vaspera 2.10.1 → 2.12.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.
Files changed (166) hide show
  1. package/dist/__tests__/audit-trail.test.d.ts +7 -0
  2. package/dist/__tests__/audit-trail.test.d.ts.map +1 -0
  3. package/dist/__tests__/audit-trail.test.js +336 -0
  4. package/dist/__tests__/audit-trail.test.js.map +1 -0
  5. package/dist/__tests__/property-test-helpers.d.ts +1 -1
  6. package/dist/action/pr-comment.test.js +9 -0
  7. package/dist/action/pr-comment.test.js.map +1 -1
  8. package/dist/action/sarif-upload.test.js +9 -0
  9. package/dist/action/sarif-upload.test.js.map +1 -1
  10. package/dist/autofix/ast/__tests__/typescript.test.d.ts +5 -0
  11. package/dist/autofix/ast/__tests__/typescript.test.d.ts.map +1 -0
  12. package/dist/autofix/ast/__tests__/typescript.test.js +210 -0
  13. package/dist/autofix/ast/__tests__/typescript.test.js.map +1 -0
  14. package/dist/autofix/ast/index.d.ts +11 -0
  15. package/dist/autofix/ast/index.d.ts.map +1 -0
  16. package/dist/autofix/ast/index.js +11 -0
  17. package/dist/autofix/ast/index.js.map +1 -0
  18. package/dist/autofix/ast/types.d.ts +77 -0
  19. package/dist/autofix/ast/types.d.ts.map +1 -0
  20. package/dist/autofix/ast/types.js +9 -0
  21. package/dist/autofix/ast/types.js.map +1 -0
  22. package/dist/autofix/ast/typescript.d.ts +17 -0
  23. package/dist/autofix/ast/typescript.d.ts.map +1 -0
  24. package/dist/autofix/ast/typescript.js +427 -0
  25. package/dist/autofix/ast/typescript.js.map +1 -0
  26. package/dist/autofix/constitution.schema.d.ts +21 -21
  27. package/dist/autofix/index.d.ts +1 -0
  28. package/dist/autofix/index.d.ts.map +1 -1
  29. package/dist/autofix/index.js +2 -0
  30. package/dist/autofix/index.js.map +1 -1
  31. package/dist/config/flags.d.ts +6 -6
  32. package/dist/history/store.d.ts +55 -1
  33. package/dist/history/store.d.ts.map +1 -1
  34. package/dist/history/store.js +152 -4
  35. package/dist/history/store.js.map +1 -1
  36. package/dist/history/types.d.ts +9 -5
  37. package/dist/history/types.d.ts.map +1 -1
  38. package/dist/history/verify.d.ts.map +1 -1
  39. package/dist/history/verify.js +5 -3
  40. package/dist/history/verify.js.map +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +627 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/integrations/siem/datadog.d.ts +44 -0
  45. package/dist/integrations/siem/datadog.d.ts.map +1 -0
  46. package/dist/integrations/siem/datadog.js +211 -0
  47. package/dist/integrations/siem/datadog.js.map +1 -0
  48. package/dist/integrations/siem/format.d.ts +59 -0
  49. package/dist/integrations/siem/format.d.ts.map +1 -0
  50. package/dist/integrations/siem/format.js +360 -0
  51. package/dist/integrations/siem/format.js.map +1 -0
  52. package/dist/integrations/siem/index.d.ts +56 -0
  53. package/dist/integrations/siem/index.d.ts.map +1 -0
  54. package/dist/integrations/siem/index.js +117 -0
  55. package/dist/integrations/siem/index.js.map +1 -0
  56. package/dist/integrations/siem/sentinel.d.ts +53 -0
  57. package/dist/integrations/siem/sentinel.d.ts.map +1 -0
  58. package/dist/integrations/siem/sentinel.js +231 -0
  59. package/dist/integrations/siem/sentinel.js.map +1 -0
  60. package/dist/integrations/siem/splunk.d.ts +46 -0
  61. package/dist/integrations/siem/splunk.d.ts.map +1 -0
  62. package/dist/integrations/siem/splunk.js +210 -0
  63. package/dist/integrations/siem/splunk.js.map +1 -0
  64. package/dist/integrations/siem/types.d.ts +210 -0
  65. package/dist/integrations/siem/types.d.ts.map +1 -0
  66. package/dist/integrations/siem/types.js +9 -0
  67. package/dist/integrations/siem/types.js.map +1 -0
  68. package/dist/persistence/__tests__/persistence.test.d.ts +5 -0
  69. package/dist/persistence/__tests__/persistence.test.d.ts.map +1 -0
  70. package/dist/persistence/__tests__/persistence.test.js +369 -0
  71. package/dist/persistence/__tests__/persistence.test.js.map +1 -0
  72. package/dist/persistence/db.d.ts +15 -0
  73. package/dist/persistence/db.d.ts.map +1 -0
  74. package/dist/persistence/db.js +79 -0
  75. package/dist/persistence/db.js.map +1 -0
  76. package/dist/persistence/index.d.ts +66 -0
  77. package/dist/persistence/index.d.ts.map +1 -0
  78. package/dist/persistence/index.js +143 -0
  79. package/dist/persistence/index.js.map +1 -0
  80. package/dist/persistence/migrations/index.d.ts +10 -0
  81. package/dist/persistence/migrations/index.d.ts.map +1 -0
  82. package/dist/persistence/migrations/index.js +125 -0
  83. package/dist/persistence/migrations/index.js.map +1 -0
  84. package/dist/persistence/repositories/findings.d.ts +41 -0
  85. package/dist/persistence/repositories/findings.d.ts.map +1 -0
  86. package/dist/persistence/repositories/findings.js +238 -0
  87. package/dist/persistence/repositories/findings.js.map +1 -0
  88. package/dist/persistence/repositories/projects.d.ts +22 -0
  89. package/dist/persistence/repositories/projects.d.ts.map +1 -0
  90. package/dist/persistence/repositories/projects.js +71 -0
  91. package/dist/persistence/repositories/projects.js.map +1 -0
  92. package/dist/persistence/repositories/scans.d.ts +30 -0
  93. package/dist/persistence/repositories/scans.d.ts.map +1 -0
  94. package/dist/persistence/repositories/scans.js +107 -0
  95. package/dist/persistence/repositories/scans.js.map +1 -0
  96. package/dist/persistence/repositories/trends.d.ts +42 -0
  97. package/dist/persistence/repositories/trends.d.ts.map +1 -0
  98. package/dist/persistence/repositories/trends.js +178 -0
  99. package/dist/persistence/repositories/trends.js.map +1 -0
  100. package/dist/persistence/types.d.ts +105 -0
  101. package/dist/persistence/types.d.ts.map +1 -0
  102. package/dist/persistence/types.js +13 -0
  103. package/dist/persistence/types.js.map +1 -0
  104. package/dist/plugins/types.d.ts +2 -2
  105. package/dist/scanners/ai-code/types.d.ts +12 -12
  106. package/dist/scanners/cache.d.ts.map +1 -1
  107. package/dist/scanners/cache.js +9 -0
  108. package/dist/scanners/cache.js.map +1 -1
  109. package/dist/scanners/dast.d.ts +40 -0
  110. package/dist/scanners/dast.d.ts.map +1 -0
  111. package/dist/scanners/dast.js +228 -0
  112. package/dist/scanners/dast.js.map +1 -0
  113. package/dist/scanners/deploy/types.d.ts +19 -19
  114. package/dist/scanners/detection/__tests__/detection.test.d.ts +5 -0
  115. package/dist/scanners/detection/__tests__/detection.test.d.ts.map +1 -0
  116. package/dist/scanners/detection/__tests__/detection.test.js +265 -0
  117. package/dist/scanners/detection/__tests__/detection.test.js.map +1 -0
  118. package/dist/scanners/detection/engines/ast-query.d.ts +23 -0
  119. package/dist/scanners/detection/engines/ast-query.d.ts.map +1 -0
  120. package/dist/scanners/detection/engines/ast-query.js +232 -0
  121. package/dist/scanners/detection/engines/ast-query.js.map +1 -0
  122. package/dist/scanners/detection/engines/data-flow.d.ts +12 -0
  123. package/dist/scanners/detection/engines/data-flow.d.ts.map +1 -0
  124. package/dist/scanners/detection/engines/data-flow.js +269 -0
  125. package/dist/scanners/detection/engines/data-flow.js.map +1 -0
  126. package/dist/scanners/detection/index.d.ts +29 -0
  127. package/dist/scanners/detection/index.d.ts.map +1 -0
  128. package/dist/scanners/detection/index.js +140 -0
  129. package/dist/scanners/detection/index.js.map +1 -0
  130. package/dist/scanners/detection/rules/builtin.d.ts +14 -0
  131. package/dist/scanners/detection/rules/builtin.d.ts.map +1 -0
  132. package/dist/scanners/detection/rules/builtin.js +307 -0
  133. package/dist/scanners/detection/rules/builtin.js.map +1 -0
  134. package/dist/scanners/detection/rules/loader.d.ts +19 -0
  135. package/dist/scanners/detection/rules/loader.d.ts.map +1 -0
  136. package/dist/scanners/detection/rules/loader.js +111 -0
  137. package/dist/scanners/detection/rules/loader.js.map +1 -0
  138. package/dist/scanners/detection/types.d.ts +171 -0
  139. package/dist/scanners/detection/types.d.ts.map +1 -0
  140. package/dist/scanners/detection/types.js +36 -0
  141. package/dist/scanners/detection/types.js.map +1 -0
  142. package/dist/scanners/index.d.ts +13 -5
  143. package/dist/scanners/index.d.ts.map +1 -1
  144. package/dist/scanners/index.js +197 -15
  145. package/dist/scanners/index.js.map +1 -1
  146. package/dist/scanners/index.test.js +6 -6
  147. package/dist/scanners/index.test.js.map +1 -1
  148. package/dist/scanners/openapi.d.ts +20 -0
  149. package/dist/scanners/openapi.d.ts.map +1 -0
  150. package/dist/scanners/openapi.js +226 -0
  151. package/dist/scanners/openapi.js.map +1 -0
  152. package/dist/scanners/runtime/types.d.ts +4 -4
  153. package/dist/scanners/rust.d.ts +22 -0
  154. package/dist/scanners/rust.d.ts.map +1 -0
  155. package/dist/scanners/rust.js +239 -0
  156. package/dist/scanners/rust.js.map +1 -0
  157. package/dist/scanners/scale/types.d.ts +19 -19
  158. package/dist/scanners/terraform.d.ts +23 -0
  159. package/dist/scanners/terraform.d.ts.map +1 -0
  160. package/dist/scanners/terraform.js +207 -0
  161. package/dist/scanners/terraform.js.map +1 -0
  162. package/dist/scanners/types.d.ts +1 -1
  163. package/dist/scanners/types.d.ts.map +1 -1
  164. package/dist/scanners/types.js +9 -0
  165. package/dist/scanners/types.js.map +1 -1
  166. package/package.json +5 -1
@@ -0,0 +1,427 @@
1
+ /**
2
+ * TypeScript/JavaScript AST Transforms
3
+ *
4
+ * Uses ts-morph for AST manipulation to fix security vulnerabilities.
5
+ *
6
+ * @module autofix/ast/typescript
7
+ */
8
+ import { Project, SyntaxKind, Node } from "ts-morph";
9
+ import { readFile, writeFile } from "fs/promises";
10
+ const project = new Project({
11
+ useInMemoryFileSystem: false,
12
+ skipFileDependencyResolution: true,
13
+ });
14
+ export async function transformSQLInjection(context) {
15
+ const { filePath, finding } = context;
16
+ const changes = [];
17
+ try {
18
+ const originalCode = await readFile(filePath, "utf-8");
19
+ const sourceFile = project.createSourceFile(`temp_${Date.now()}.ts`, originalCode, { overwrite: true });
20
+ const targetLine = finding.line;
21
+ sourceFile.forEachDescendant((node) => {
22
+ const startLine = node.getStartLineNumber();
23
+ if (Math.abs(startLine - targetLine) > 3)
24
+ return;
25
+ if (Node.isCallExpression(node)) {
26
+ const expression = node.getExpression();
27
+ const expressionText = expression.getText();
28
+ if (expressionText.includes("query") ||
29
+ expressionText.includes("execute") ||
30
+ expressionText.includes("raw")) {
31
+ const args = node.getArguments();
32
+ if (args.length > 0) {
33
+ const firstArg = args[0];
34
+ if (Node.isTemplateExpression(firstArg)) {
35
+ const result = transformTemplateToParameterized(node, firstArg);
36
+ if (result) {
37
+ changes.push({
38
+ type: "replace",
39
+ startLine: node.getStartLineNumber(),
40
+ endLine: node.getEndLineNumber(),
41
+ originalText: node.getText(),
42
+ newText: result.newCode,
43
+ description: "Convert template literal SQL to parameterized query",
44
+ });
45
+ node.replaceWithText(result.newCode);
46
+ }
47
+ }
48
+ else if (Node.isBinaryExpression(firstArg)) {
49
+ const result = transformConcatToParameterized(node, firstArg);
50
+ if (result) {
51
+ changes.push({
52
+ type: "replace",
53
+ startLine: node.getStartLineNumber(),
54
+ endLine: node.getEndLineNumber(),
55
+ originalText: node.getText(),
56
+ newText: result.newCode,
57
+ description: "Convert string concatenation SQL to parameterized query",
58
+ });
59
+ node.replaceWithText(result.newCode);
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ });
66
+ const transformedCode = sourceFile.getFullText();
67
+ sourceFile.delete();
68
+ if (changes.length > 0) {
69
+ await writeFile(filePath, transformedCode, "utf-8");
70
+ }
71
+ return {
72
+ success: changes.length > 0,
73
+ filePath,
74
+ originalCode,
75
+ transformedCode: changes.length > 0 ? transformedCode : originalCode,
76
+ changesApplied: changes,
77
+ error: changes.length === 0 ? "No SQL injection patterns found to fix" : undefined,
78
+ };
79
+ }
80
+ catch (error) {
81
+ return {
82
+ success: false,
83
+ filePath,
84
+ originalCode: "",
85
+ transformedCode: "",
86
+ changesApplied: [],
87
+ error: error instanceof Error ? error.message : "Unknown error",
88
+ };
89
+ }
90
+ }
91
+ function transformTemplateToParameterized(callExpr, templateExpr) {
92
+ const params = [];
93
+ let paramIndex = 1;
94
+ let sqlParts = [];
95
+ const head = templateExpr.getHead().getLiteralText();
96
+ sqlParts.push(head);
97
+ for (const span of templateExpr.getTemplateSpans()) {
98
+ const expr = span.getExpression();
99
+ params.push(expr.getText());
100
+ sqlParts.push(`$${paramIndex++}`);
101
+ sqlParts.push(span.getLiteral().getLiteralText());
102
+ }
103
+ const sql = sqlParts.join("");
104
+ const expression = callExpr.getExpression().getText();
105
+ const newCode = `${expression}(\`${sql}\`, [${params.join(", ")}])`;
106
+ return { newCode, params };
107
+ }
108
+ function transformConcatToParameterized(callExpr, binaryExpr) {
109
+ const params = [];
110
+ const sqlParts = [];
111
+ let paramIndex = 1;
112
+ function extractParts(node) {
113
+ if (Node.isBinaryExpression(node)) {
114
+ extractParts(node.getLeft());
115
+ extractParts(node.getRight());
116
+ }
117
+ else if (Node.isStringLiteral(node)) {
118
+ sqlParts.push(node.getLiteralText());
119
+ }
120
+ else {
121
+ params.push(node.getText());
122
+ sqlParts.push(`$${paramIndex++}`);
123
+ }
124
+ }
125
+ extractParts(binaryExpr);
126
+ const sql = sqlParts.join("");
127
+ const expression = callExpr.getExpression().getText();
128
+ const newCode = `${expression}(\`${sql}\`, [${params.join(", ")}])`;
129
+ return { newCode, params };
130
+ }
131
+ export async function transformXSS(context) {
132
+ const { filePath, finding } = context;
133
+ const changes = [];
134
+ try {
135
+ const originalCode = await readFile(filePath, "utf-8");
136
+ const sourceFile = project.createSourceFile(`temp_${Date.now()}.ts`, originalCode, { overwrite: true });
137
+ const targetLine = finding.line;
138
+ sourceFile.forEachDescendant((node) => {
139
+ const startLine = node.getStartLineNumber();
140
+ if (Math.abs(startLine - targetLine) > 3)
141
+ return;
142
+ if (Node.isBinaryExpression(node)) {
143
+ const left = node.getLeft();
144
+ if (Node.isPropertyAccessExpression(left)) {
145
+ const propName = left.getName();
146
+ if (propName === "innerHTML" || propName === "outerHTML") {
147
+ const parent = node.getParent();
148
+ if (parent) {
149
+ const leftText = left.getExpression().getText();
150
+ const rightText = node.getRight().getText();
151
+ const newCode = `${leftText}.textContent = ${rightText}`;
152
+ changes.push({
153
+ type: "replace",
154
+ startLine: node.getStartLineNumber(),
155
+ endLine: node.getEndLineNumber(),
156
+ originalText: node.getText(),
157
+ newText: newCode,
158
+ description: `Replace ${propName} with textContent to prevent XSS`,
159
+ });
160
+ node.replaceWithText(newCode);
161
+ }
162
+ }
163
+ }
164
+ }
165
+ if (Node.isCallExpression(node)) {
166
+ const expression = node.getExpression();
167
+ if (Node.isPropertyAccessExpression(expression)) {
168
+ const methodName = expression.getName();
169
+ if (methodName === "insertAdjacentHTML") {
170
+ const args = node.getArguments();
171
+ if (args.length >= 2) {
172
+ const objText = expression.getExpression().getText();
173
+ const position = args[0].getText();
174
+ const content = args[1].getText();
175
+ const newCode = position.includes("beforeend") || position.includes("afterbegin")
176
+ ? `${objText}.append(document.createTextNode(${content}))`
177
+ : `${objText}.insertAdjacentText(${position}, ${content})`;
178
+ changes.push({
179
+ type: "replace",
180
+ startLine: node.getStartLineNumber(),
181
+ endLine: node.getEndLineNumber(),
182
+ originalText: node.getText(),
183
+ newText: newCode,
184
+ description: "Replace insertAdjacentHTML with safe text insertion",
185
+ });
186
+ node.replaceWithText(newCode);
187
+ }
188
+ }
189
+ if (methodName === "write" || methodName === "writeln") {
190
+ const objText = expression.getExpression().getText();
191
+ if (objText === "document") {
192
+ changes.push({
193
+ type: "replace",
194
+ startLine: node.getStartLineNumber(),
195
+ endLine: node.getEndLineNumber(),
196
+ originalText: node.getText(),
197
+ newText: `/* UNSAFE: ${node.getText()} - Use DOM methods instead */`,
198
+ description: "Comment out document.write (requires manual fix)",
199
+ });
200
+ }
201
+ }
202
+ }
203
+ }
204
+ });
205
+ const transformedCode = sourceFile.getFullText();
206
+ sourceFile.delete();
207
+ if (changes.length > 0) {
208
+ await writeFile(filePath, transformedCode, "utf-8");
209
+ }
210
+ return {
211
+ success: changes.length > 0,
212
+ filePath,
213
+ originalCode,
214
+ transformedCode: changes.length > 0 ? transformedCode : originalCode,
215
+ changesApplied: changes,
216
+ error: changes.length === 0 ? "No XSS patterns found to fix" : undefined,
217
+ };
218
+ }
219
+ catch (error) {
220
+ return {
221
+ success: false,
222
+ filePath,
223
+ originalCode: "",
224
+ transformedCode: "",
225
+ changesApplied: [],
226
+ error: error instanceof Error ? error.message : "Unknown error",
227
+ };
228
+ }
229
+ }
230
+ export async function transformHardcodedSecrets(context) {
231
+ const { filePath, finding } = context;
232
+ const changes = [];
233
+ try {
234
+ const originalCode = await readFile(filePath, "utf-8");
235
+ const sourceFile = project.createSourceFile(`temp_${Date.now()}.ts`, originalCode, { overwrite: true });
236
+ const targetLine = finding.line;
237
+ const secretPatterns = [
238
+ /api[_-]?key/i,
239
+ /secret[_-]?key/i,
240
+ /password/i,
241
+ /auth[_-]?token/i,
242
+ /access[_-]?token/i,
243
+ /private[_-]?key/i,
244
+ /bearer/i,
245
+ /credential/i,
246
+ ];
247
+ sourceFile.forEachDescendant((node) => {
248
+ const startLine = node.getStartLineNumber();
249
+ if (Math.abs(startLine - targetLine) > 3)
250
+ return;
251
+ if (Node.isVariableDeclaration(node)) {
252
+ const name = node.getName();
253
+ const initializer = node.getInitializer();
254
+ if (initializer && Node.isStringLiteral(initializer)) {
255
+ const value = initializer.getLiteralText();
256
+ const isSecretName = secretPatterns.some((p) => p.test(name));
257
+ const looksLikeSecret = value.length > 10 && /[a-zA-Z0-9+/=_-]{10,}/.test(value);
258
+ if (isSecretName || looksLikeSecret) {
259
+ const envVarName = toEnvVarName(name);
260
+ const newCode = `process.env.${envVarName}`;
261
+ changes.push({
262
+ type: "replace",
263
+ startLine: initializer.getStartLineNumber(),
264
+ endLine: initializer.getEndLineNumber(),
265
+ originalText: initializer.getText(),
266
+ newText: newCode,
267
+ description: `Replace hardcoded secret with environment variable ${envVarName}`,
268
+ });
269
+ initializer.replaceWithText(newCode);
270
+ }
271
+ }
272
+ }
273
+ if (Node.isPropertyAssignment(node)) {
274
+ const name = node.getName();
275
+ const initializer = node.getInitializer();
276
+ if (initializer && Node.isStringLiteral(initializer)) {
277
+ const value = initializer.getLiteralText();
278
+ const isSecretName = secretPatterns.some((p) => p.test(name));
279
+ const looksLikeSecret = value.length > 10 && /[a-zA-Z0-9+/=_-]{10,}/.test(value);
280
+ if (isSecretName || looksLikeSecret) {
281
+ const envVarName = toEnvVarName(name);
282
+ const newCode = `process.env.${envVarName}`;
283
+ changes.push({
284
+ type: "replace",
285
+ startLine: initializer.getStartLineNumber(),
286
+ endLine: initializer.getEndLineNumber(),
287
+ originalText: initializer.getText(),
288
+ newText: newCode,
289
+ description: `Replace hardcoded secret with environment variable ${envVarName}`,
290
+ });
291
+ initializer.replaceWithText(newCode);
292
+ }
293
+ }
294
+ }
295
+ });
296
+ const transformedCode = sourceFile.getFullText();
297
+ sourceFile.delete();
298
+ if (changes.length > 0) {
299
+ await writeFile(filePath, transformedCode, "utf-8");
300
+ }
301
+ return {
302
+ success: changes.length > 0,
303
+ filePath,
304
+ originalCode,
305
+ transformedCode: changes.length > 0 ? transformedCode : originalCode,
306
+ changesApplied: changes,
307
+ error: changes.length === 0 ? "No hardcoded secrets found to fix" : undefined,
308
+ };
309
+ }
310
+ catch (error) {
311
+ return {
312
+ success: false,
313
+ filePath,
314
+ originalCode: "",
315
+ transformedCode: "",
316
+ changesApplied: [],
317
+ error: error instanceof Error ? error.message : "Unknown error",
318
+ };
319
+ }
320
+ }
321
+ function toEnvVarName(name) {
322
+ return name
323
+ .replace(/([a-z])([A-Z])/g, "$1_$2")
324
+ .replace(/[-\s]/g, "_")
325
+ .toUpperCase();
326
+ }
327
+ export async function transformIDOR(context) {
328
+ const { filePath, finding } = context;
329
+ const changes = [];
330
+ try {
331
+ const originalCode = await readFile(filePath, "utf-8");
332
+ const sourceFile = project.createSourceFile(`temp_${Date.now()}.ts`, originalCode, { overwrite: true });
333
+ const targetLine = finding.line;
334
+ sourceFile.forEachDescendant((node) => {
335
+ const startLine = node.getStartLineNumber();
336
+ if (Math.abs(startLine - targetLine) > 5)
337
+ return;
338
+ if (Node.isCallExpression(node)) {
339
+ const expression = node.getExpression();
340
+ const expressionText = expression.getText();
341
+ const isDbAccess = expressionText.includes("findById") ||
342
+ expressionText.includes("findOne") ||
343
+ expressionText.includes("findUnique") ||
344
+ expressionText.includes("where");
345
+ if (isDbAccess) {
346
+ const args = node.getArguments();
347
+ if (args.length > 0) {
348
+ const idArg = args[0].getText();
349
+ if (idArg.includes("req.params") ||
350
+ idArg.includes("req.query") ||
351
+ idArg.includes("req.body")) {
352
+ const ownershipCheck = `// IDOR Protection: Verify ownership before accessing resource
353
+ const resource = await ${node.getText()};
354
+ if (!resource || resource.userId !== req.user?.id) {
355
+ throw new Error("Access denied: Resource not found or not owned by user");
356
+ }`;
357
+ const statement = node.getFirstAncestorByKind(SyntaxKind.VariableStatement);
358
+ if (statement) {
359
+ changes.push({
360
+ type: "replace",
361
+ startLine: statement.getStartLineNumber(),
362
+ endLine: statement.getEndLineNumber(),
363
+ originalText: statement.getText(),
364
+ newText: ownershipCheck.trim(),
365
+ description: "Add ownership verification to prevent IDOR",
366
+ });
367
+ statement.replaceWithText(ownershipCheck.trim());
368
+ }
369
+ }
370
+ }
371
+ }
372
+ }
373
+ });
374
+ const transformedCode = sourceFile.getFullText();
375
+ sourceFile.delete();
376
+ if (changes.length > 0) {
377
+ await writeFile(filePath, transformedCode, "utf-8");
378
+ }
379
+ return {
380
+ success: changes.length > 0,
381
+ filePath,
382
+ originalCode,
383
+ transformedCode: changes.length > 0 ? transformedCode : originalCode,
384
+ changesApplied: changes,
385
+ error: changes.length === 0 ? "No IDOR patterns found to fix" : undefined,
386
+ };
387
+ }
388
+ catch (error) {
389
+ return {
390
+ success: false,
391
+ filePath,
392
+ originalCode: "",
393
+ transformedCode: "",
394
+ changesApplied: [],
395
+ error: error instanceof Error ? error.message : "Unknown error",
396
+ };
397
+ }
398
+ }
399
+ export const AST_TRANSFORMS = {
400
+ "sql-injection": transformSQLInjection,
401
+ "xss": transformXSS,
402
+ "hardcoded-secrets": transformHardcodedSecrets,
403
+ "secrets": transformHardcodedSecrets,
404
+ "idor": transformIDOR,
405
+ "authorization": transformIDOR,
406
+ };
407
+ export async function applyASTTransform(category, context) {
408
+ const transform = AST_TRANSFORMS[category.toLowerCase()];
409
+ if (!transform) {
410
+ return {
411
+ success: false,
412
+ filePath: context.filePath,
413
+ originalCode: "",
414
+ transformedCode: "",
415
+ changesApplied: [],
416
+ error: `No AST transform available for category: ${category}`,
417
+ };
418
+ }
419
+ return transform(context);
420
+ }
421
+ export function hasASTTransform(category) {
422
+ return category.toLowerCase() in AST_TRANSFORMS;
423
+ }
424
+ export function listASTTransforms() {
425
+ return Object.keys(AST_TRANSFORMS);
426
+ }
427
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/autofix/ast/typescript.ts"],"names":[],"mappings":"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"}
@@ -28,15 +28,15 @@ export declare const PatternConditionsSchema: z.ZodOptional<z.ZodObject<{
28
28
  /** Only if severity at or above this level */
29
29
  minSeverity: z.ZodOptional<z.ZodEnum<["info", "low", "medium", "high", "critical"]>>;
30
30
  }, "strip", z.ZodTypeAny, {
31
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
32
31
  allowedPaths?: string[] | undefined;
33
32
  excludedPaths?: string[] | undefined;
34
33
  maxLinesChanged?: number | undefined;
35
- }, {
36
34
  minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
35
+ }, {
37
36
  allowedPaths?: string[] | undefined;
38
37
  excludedPaths?: string[] | undefined;
39
38
  maxLinesChanged?: number | undefined;
39
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
40
40
  }>>;
41
41
  /**
42
42
  * Pattern approval configuration
@@ -59,35 +59,35 @@ export declare const PatternApprovalSchema: z.ZodObject<{
59
59
  /** Only if severity at or above this level */
60
60
  minSeverity: z.ZodOptional<z.ZodEnum<["info", "low", "medium", "high", "critical"]>>;
61
61
  }, "strip", z.ZodTypeAny, {
62
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
63
62
  allowedPaths?: string[] | undefined;
64
63
  excludedPaths?: string[] | undefined;
65
64
  maxLinesChanged?: number | undefined;
66
- }, {
67
65
  minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
66
+ }, {
68
67
  allowedPaths?: string[] | undefined;
69
68
  excludedPaths?: string[] | undefined;
70
69
  maxLinesChanged?: number | undefined;
70
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
71
71
  }>>;
72
72
  }, "strip", z.ZodTypeAny, {
73
73
  patternId: string;
74
74
  autoApprove: boolean;
75
75
  requiredReviewer?: string | undefined;
76
76
  conditions?: {
77
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
78
77
  allowedPaths?: string[] | undefined;
79
78
  excludedPaths?: string[] | undefined;
80
79
  maxLinesChanged?: number | undefined;
80
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
81
81
  } | undefined;
82
82
  }, {
83
83
  patternId: string;
84
84
  autoApprove: boolean;
85
85
  requiredReviewer?: string | undefined;
86
86
  conditions?: {
87
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
88
87
  allowedPaths?: string[] | undefined;
89
88
  excludedPaths?: string[] | undefined;
90
89
  maxLinesChanged?: number | undefined;
90
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
91
91
  } | undefined;
92
92
  }>;
93
93
  /**
@@ -144,13 +144,13 @@ export declare const DirectoryRulesSchema: z.ZodObject<{
144
144
  /** Skip scanning these directories entirely */
145
145
  ignore: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
146
146
  }, "strip", z.ZodTypeAny, {
147
- ignore: string[];
148
147
  neverAutofix: string[];
149
148
  requireReview: string[];
149
+ ignore: string[];
150
150
  }, {
151
- ignore?: string[] | undefined;
152
151
  neverAutofix?: string[] | undefined;
153
152
  requireReview?: string[] | undefined;
153
+ ignore?: string[] | undefined;
154
154
  }>;
155
155
  /**
156
156
  * Safety constraints
@@ -216,35 +216,35 @@ export declare const ConstitutionSchema: z.ZodObject<{
216
216
  /** Only if severity at or above this level */
217
217
  minSeverity: z.ZodOptional<z.ZodEnum<["info", "low", "medium", "high", "critical"]>>;
218
218
  }, "strip", z.ZodTypeAny, {
219
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
220
219
  allowedPaths?: string[] | undefined;
221
220
  excludedPaths?: string[] | undefined;
222
221
  maxLinesChanged?: number | undefined;
223
- }, {
224
222
  minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
223
+ }, {
225
224
  allowedPaths?: string[] | undefined;
226
225
  excludedPaths?: string[] | undefined;
227
226
  maxLinesChanged?: number | undefined;
227
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
228
228
  }>>;
229
229
  }, "strip", z.ZodTypeAny, {
230
230
  patternId: string;
231
231
  autoApprove: boolean;
232
232
  requiredReviewer?: string | undefined;
233
233
  conditions?: {
234
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
235
234
  allowedPaths?: string[] | undefined;
236
235
  excludedPaths?: string[] | undefined;
237
236
  maxLinesChanged?: number | undefined;
237
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
238
238
  } | undefined;
239
239
  }, {
240
240
  patternId: string;
241
241
  autoApprove: boolean;
242
242
  requiredReviewer?: string | undefined;
243
243
  conditions?: {
244
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
245
244
  allowedPaths?: string[] | undefined;
246
245
  excludedPaths?: string[] | undefined;
247
246
  maxLinesChanged?: number | undefined;
247
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
248
248
  } | undefined;
249
249
  }>, "many">>;
250
250
  /** PR creation rules */
@@ -297,13 +297,13 @@ export declare const ConstitutionSchema: z.ZodObject<{
297
297
  /** Skip scanning these directories entirely */
298
298
  ignore: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
299
299
  }, "strip", z.ZodTypeAny, {
300
- ignore: string[];
301
300
  neverAutofix: string[];
302
301
  requireReview: string[];
302
+ ignore: string[];
303
303
  }, {
304
- ignore?: string[] | undefined;
305
304
  neverAutofix?: string[] | undefined;
306
305
  requireReview?: string[] | undefined;
306
+ ignore?: string[] | undefined;
307
307
  }>>;
308
308
  /** Safety constraints */
309
309
  safety: z.ZodDefault<z.ZodObject<{
@@ -342,18 +342,18 @@ export declare const ConstitutionSchema: z.ZodObject<{
342
342
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
343
343
  }, "strip", z.ZodTypeAny, {
344
344
  version: "1.0";
345
+ riskTolerance: "conservative" | "moderate" | "aggressive";
345
346
  patterns: {
346
347
  patternId: string;
347
348
  autoApprove: boolean;
348
349
  requiredReviewer?: string | undefined;
349
350
  conditions?: {
350
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
351
351
  allowedPaths?: string[] | undefined;
352
352
  excludedPaths?: string[] | undefined;
353
353
  maxLinesChanged?: number | undefined;
354
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
354
355
  } | undefined;
355
356
  }[];
356
- riskTolerance: "moderate" | "aggressive" | "conservative";
357
357
  prRules: {
358
358
  groupBy: "file" | "severity" | "pattern" | "single";
359
359
  requireApproval: boolean;
@@ -366,9 +366,9 @@ export declare const ConstitutionSchema: z.ZodObject<{
366
366
  maxPRsPerRun: number;
367
367
  };
368
368
  directories: {
369
- ignore: string[];
370
369
  neverAutofix: string[];
371
370
  requireReview: string[];
371
+ ignore: string[];
372
372
  };
373
373
  safety: {
374
374
  requireCleanWorkingTree: boolean;
@@ -384,19 +384,19 @@ export declare const ConstitutionSchema: z.ZodObject<{
384
384
  }, {
385
385
  version: "1.0";
386
386
  metadata?: Record<string, string> | undefined;
387
+ organization?: string | undefined;
388
+ riskTolerance?: "conservative" | "moderate" | "aggressive" | undefined;
387
389
  patterns?: {
388
390
  patternId: string;
389
391
  autoApprove: boolean;
390
392
  requiredReviewer?: string | undefined;
391
393
  conditions?: {
392
- minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
393
394
  allowedPaths?: string[] | undefined;
394
395
  excludedPaths?: string[] | undefined;
395
396
  maxLinesChanged?: number | undefined;
397
+ minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
396
398
  } | undefined;
397
399
  }[] | undefined;
398
- organization?: string | undefined;
399
- riskTolerance?: "moderate" | "aggressive" | "conservative" | undefined;
400
400
  prRules?: {
401
401
  groupBy?: "file" | "severity" | "pattern" | "single" | undefined;
402
402
  requireApproval?: boolean | undefined;
@@ -409,9 +409,9 @@ export declare const ConstitutionSchema: z.ZodObject<{
409
409
  maxPRsPerRun?: number | undefined;
410
410
  } | undefined;
411
411
  directories?: {
412
- ignore?: string[] | undefined;
413
412
  neverAutofix?: string[] | undefined;
414
413
  requireReview?: string[] | undefined;
414
+ ignore?: string[] | undefined;
415
415
  } | undefined;
416
416
  safety?: {
417
417
  requireCleanWorkingTree?: boolean | undefined;
@@ -10,4 +10,5 @@ export { DEFAULT_AUTOFIX_PR_CONFIG } from "./types.js";
10
10
  export { git, isGitAvailable, isGitRepo, getCurrentBranch, getDefaultBranch, branchExists, remoteBranchExists, createBranch, checkoutBranch, deleteBranch, stageFiles, getModifiedFiles, getStagedFiles, isWorkingTreeClean, pushBranch, stash, stashPop, getBranchInfo, resetToCommit, getRemoteUrl, parseGitHubRemote, generateBranchName, ensureCleanWorkingTree, restoreOriginalState, } from "./branch-manager.js";
11
11
  export { generateCommitMessage, generateCommitBody, createCommit, generatePRTitle, generatePRBody, groupFixesBySeverity, groupFixesByFile, groupFixesByPattern, } from "./commit-generator.js";
12
12
  export { isGhCliAvailable, isGhAuthenticated, groupFindings, createAutofixPR, createAutofixPRs, previewAutofixPRs, } from "./pr-generator.js";
13
+ export { applyASTTransform, hasASTTransform, listASTTransforms, transformSQLInjection, transformXSS, transformHardcodedSecrets, transformIDOR, AST_TRANSFORMS, type ASTTransformResult, type ASTTransformContext, type ASTChange, } from "./ast/index.js";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/autofix/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,OAAO,EACL,GAAG,EACH,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/autofix/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,OAAO,EACL,GAAG,EACH,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,SAAS,GACf,MAAM,gBAAgB,CAAC"}