@oddessentials/odd-ai-reviewers 1.7.3 → 1.8.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 (73) hide show
  1. package/dist/agents/ai_semantic_review.d.ts.map +1 -1
  2. package/dist/agents/ai_semantic_review.js +4 -1
  3. package/dist/agents/ai_semantic_review.js.map +1 -1
  4. package/dist/agents/control_flow/safe-source-detector.d.ts +48 -0
  5. package/dist/agents/control_flow/safe-source-detector.d.ts.map +1 -0
  6. package/dist/agents/control_flow/safe-source-detector.js +424 -0
  7. package/dist/agents/control_flow/safe-source-detector.js.map +1 -0
  8. package/dist/agents/control_flow/safe-source-patterns.d.ts +61 -0
  9. package/dist/agents/control_flow/safe-source-patterns.d.ts.map +1 -0
  10. package/dist/agents/control_flow/safe-source-patterns.js +137 -0
  11. package/dist/agents/control_flow/safe-source-patterns.js.map +1 -0
  12. package/dist/agents/control_flow/scope-stack.d.ts +113 -0
  13. package/dist/agents/control_flow/scope-stack.d.ts.map +1 -0
  14. package/dist/agents/control_flow/scope-stack.js +320 -0
  15. package/dist/agents/control_flow/scope-stack.js.map +1 -0
  16. package/dist/agents/control_flow/vulnerability-detector.d.ts +13 -0
  17. package/dist/agents/control_flow/vulnerability-detector.d.ts.map +1 -1
  18. package/dist/agents/control_flow/vulnerability-detector.js +252 -35
  19. package/dist/agents/control_flow/vulnerability-detector.js.map +1 -1
  20. package/dist/agents/opencode.d.ts.map +1 -1
  21. package/dist/agents/opencode.js +4 -1
  22. package/dist/agents/opencode.js.map +1 -1
  23. package/dist/agents/pr_agent.d.ts.map +1 -1
  24. package/dist/agents/pr_agent.js +5 -2
  25. package/dist/agents/pr_agent.js.map +1 -1
  26. package/dist/agents/security.d.ts.map +1 -1
  27. package/dist/agents/security.js +1 -0
  28. package/dist/agents/security.js.map +1 -1
  29. package/dist/agents/types.d.ts +6 -0
  30. package/dist/agents/types.d.ts.map +1 -1
  31. package/dist/benchmark/adapter.d.ts +39 -0
  32. package/dist/benchmark/adapter.d.ts.map +1 -0
  33. package/dist/benchmark/adapter.js +217 -0
  34. package/dist/benchmark/adapter.js.map +1 -0
  35. package/dist/benchmark/scoring.d.ts +100 -0
  36. package/dist/benchmark/scoring.d.ts.map +1 -0
  37. package/dist/benchmark/scoring.js +195 -0
  38. package/dist/benchmark/scoring.js.map +1 -0
  39. package/dist/context-loader.d.ts +80 -0
  40. package/dist/context-loader.d.ts.map +1 -0
  41. package/dist/context-loader.js +202 -0
  42. package/dist/context-loader.js.map +1 -0
  43. package/dist/main.d.ts.map +1 -1
  44. package/dist/main.js +131 -4
  45. package/dist/main.js.map +1 -1
  46. package/dist/phases/index.d.ts +1 -1
  47. package/dist/phases/index.d.ts.map +1 -1
  48. package/dist/phases/index.js +1 -1
  49. package/dist/phases/index.js.map +1 -1
  50. package/dist/phases/report.d.ts +8 -1
  51. package/dist/phases/report.d.ts.map +1 -1
  52. package/dist/phases/report.js +27 -5
  53. package/dist/phases/report.js.map +1 -1
  54. package/dist/preflight.d.ts.map +1 -1
  55. package/dist/preflight.js +8 -3
  56. package/dist/preflight.js.map +1 -1
  57. package/dist/report/ado.d.ts +2 -0
  58. package/dist/report/ado.d.ts.map +1 -1
  59. package/dist/report/ado.js +9 -23
  60. package/dist/report/ado.js.map +1 -1
  61. package/dist/report/finding-validator.d.ts +104 -0
  62. package/dist/report/finding-validator.d.ts.map +1 -0
  63. package/dist/report/finding-validator.js +273 -0
  64. package/dist/report/finding-validator.js.map +1 -0
  65. package/dist/report/github.d.ts +2 -0
  66. package/dist/report/github.d.ts.map +1 -1
  67. package/dist/report/github.js +9 -23
  68. package/dist/report/github.js.map +1 -1
  69. package/dist/trust.d.ts +6 -0
  70. package/dist/trust.d.ts.map +1 -1
  71. package/dist/trust.js +2 -0
  72. package/dist/trust.js.map +1 -1
  73. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"ai_semantic_review.d.ts","sourceRoot":"","sources":["../../src/agents/ai_semantic_review.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAgD,MAAM,YAAY,CAAC;AAyK5F,eAAO,MAAM,qBAAqB,EAAE,WA8NnC,CAAC"}
1
+ {"version":3,"file":"ai_semantic_review.d.ts","sourceRoot":"","sources":["../../src/agents/ai_semantic_review.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAgD,MAAM,YAAY,CAAC;AAyK5F,eAAO,MAAM,qBAAqB,EAAE,WAiOnC,CAAC"}
@@ -170,6 +170,9 @@ Line numbering requirements:
170
170
  - Use new-file line numbers from unified diff hunk headers (@@ -a,b +c,d @@)
171
171
  - Only use right-side diff lines (added or context). If unsure, omit the line.
172
172
 
173
+ ### Framework & Language Conventions
174
+ Do NOT flag: (1) Express 4-param error middleware unused _next, (2) identical query keys as double-fetching (React Query dedup), (3) Promise.allSettled iteration as "wrong order", (4) TypeScript _prefix unused params, (5) assertNever/exhaustive switch as missing error handling, (6) constants adjacent to their only usage as needing externalization.
175
+
173
176
  Return a JSON object with findings. Do NOT include any text before or after the JSON.`;
174
177
  if (existsSync(PROMPT_PATH)) {
175
178
  try {
@@ -184,7 +187,7 @@ Return a JSON object with findings. Do NOT include any text before or after the
184
187
  .join('\n');
185
188
  const userPrompt = `## Files Changed
186
189
  ${fileSummary}
187
-
190
+ ${context.projectRules ? `\n## Project Rules\n\nThe following project rules/conventions apply:\n\n${context.projectRules}\n` : ''}${context.prDescription ? `\n## PR Description\n\nThe author describes this PR as:\n\n${context.prDescription}\n` : ''}
188
191
  ## Diff Content
189
192
  \`\`\`diff
190
193
  ${context.diffContent}
@@ -1 +1 @@
1
- {"version":3,"file":"ai_semantic_review.js","sourceRoot":"","sources":["../../src/agents/ai_semantic_review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai_semantic_review.js","sourceRoot":"","sources":["../../src/agents/ai_semantic_review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Safe-Source Detector
3
+ *
4
+ * Analyzes TypeScript/JavaScript AST to identify provably non-tainted data sources.
5
+ * Safe sources are filtered out before taint tracking to prevent false positives.
6
+ *
7
+ * Implements Patterns 1-4 from the safe-source contract:
8
+ * - Pattern 1: Constant literal declarations (FR-001)
9
+ * - Pattern 2: Built-in directory references (FR-002)
10
+ * - Pattern 3: Safe directory listing returns (FR-003)
11
+ * - Pattern 4: Constant array element access (FR-004)
12
+ */
13
+ import ts from 'typescript';
14
+ import { type SafeSourceInstance } from './safe-source-patterns.js';
15
+ /**
16
+ * Matches the DetectedSource shape from vulnerability-detector.ts.
17
+ */
18
+ interface DetectedSource {
19
+ location: {
20
+ file: string;
21
+ line: number;
22
+ column?: number;
23
+ };
24
+ expression: string;
25
+ variableName: string;
26
+ declarationKey: string | null;
27
+ }
28
+ /**
29
+ * Detect provably safe data sources in a TypeScript/JavaScript source file.
30
+ *
31
+ * Walks the AST and returns SafeSourceInstance entries for each variable
32
+ * or expression that can be proven non-tainted by static analysis.
33
+ */
34
+ export declare function detectSafeSources(sourceFile: ts.SourceFile, filePath: string): SafeSourceInstance[];
35
+ /**
36
+ * Filter out detected sources that are provably safe.
37
+ *
38
+ * Keys on file:line:variableName to avoid cross-scope collisions where an
39
+ * inner-scope safe builtin (e.g. `const dir = __dirname`) would incorrectly
40
+ * suppress an outer-scope tainted variable with the same name.
41
+ *
42
+ * Note: vuln-type-aware filtering is deferred — currently all vuln types are
43
+ * suppressed for any matching safe source, which is over-conservative but
44
+ * not a security risk.
45
+ */
46
+ export declare function filterSafeSources(sources: DetectedSource[], safeSources: SafeSourceInstance[]): DetectedSource[];
47
+ export {};
48
+ //# sourceMappingURL=safe-source-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-source-detector.d.ts","sourceRoot":"","sources":["../../../src/agents/control_flow/safe-source-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAYpF;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAYD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,QAAQ,EAAE,MAAM,GACf,kBAAkB,EAAE,CAYtB;AAWD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EAAE,EACzB,WAAW,EAAE,kBAAkB,EAAE,GAChC,cAAc,EAAE,CA6BlB"}
@@ -0,0 +1,424 @@
1
+ /**
2
+ * Safe-Source Detector
3
+ *
4
+ * Analyzes TypeScript/JavaScript AST to identify provably non-tainted data sources.
5
+ * Safe sources are filtered out before taint tracking to prevent false positives.
6
+ *
7
+ * Implements Patterns 1-4 from the safe-source contract:
8
+ * - Pattern 1: Constant literal declarations (FR-001)
9
+ * - Pattern 2: Built-in directory references (FR-002)
10
+ * - Pattern 3: Safe directory listing returns (FR-003)
11
+ * - Pattern 4: Constant array element access (FR-004)
12
+ */
13
+ import ts from 'typescript';
14
+ import { ALL_VULN_TYPES } from './safe-source-patterns.js';
15
+ import { ScopeStack, isScopeNode, nodeIdentityKey, registerNodeDeclarations, } from './scope-stack.js';
16
+ // =============================================================================
17
+ // Main Detection Function
18
+ // =============================================================================
19
+ /**
20
+ * Detect provably safe data sources in a TypeScript/JavaScript source file.
21
+ *
22
+ * Walks the AST and returns SafeSourceInstance entries for each variable
23
+ * or expression that can be proven non-tainted by static analysis.
24
+ */
25
+ export function detectSafeSources(sourceFile, filePath) {
26
+ const safeSources = [];
27
+ const mutatedBindings = collectMutatedBindings(sourceFile);
28
+ const safeConstArrayDecls = new Set(); // identity keys (file:line:col)
29
+ // Pattern 1: Constant literal declarations at module scope
30
+ detectConstantLiterals(sourceFile, filePath, mutatedBindings, safeSources, safeConstArrayDecls);
31
+ // Patterns 2-4 share declaration resolution, so handle them in one scope-aware pass.
32
+ detectScopedSafeSources(sourceFile, filePath, safeConstArrayDecls, safeSources);
33
+ return safeSources;
34
+ }
35
+ /**
36
+ * Build a structured key that uniquely identifies a source declaration site.
37
+ * Uses file:line:variableName to avoid cross-scope collisions and to make
38
+ * a later move to true scope-aware matching straightforward.
39
+ */
40
+ function safeSourceKey(file, line, variableName) {
41
+ return `${file}:${line}:${variableName}`;
42
+ }
43
+ /**
44
+ * Filter out detected sources that are provably safe.
45
+ *
46
+ * Keys on file:line:variableName to avoid cross-scope collisions where an
47
+ * inner-scope safe builtin (e.g. `const dir = __dirname`) would incorrectly
48
+ * suppress an outer-scope tainted variable with the same name.
49
+ *
50
+ * Note: vuln-type-aware filtering is deferred — currently all vuln types are
51
+ * suppressed for any matching safe source, which is over-conservative but
52
+ * not a security risk.
53
+ */
54
+ export function filterSafeSources(sources, safeSources) {
55
+ if (safeSources.length === 0)
56
+ return sources;
57
+ // Key on file:line:variableName to avoid cross-scope collisions.
58
+ // Line numbers come from declaration sites, so same-name variables
59
+ // in different scopes have different keys.
60
+ const safeMap = new Map();
61
+ const safeDeclarationKeys = new Set();
62
+ for (const ss of safeSources) {
63
+ if (ss.declarationKey)
64
+ safeDeclarationKeys.add(ss.declarationKey);
65
+ const key = safeSourceKey(ss.location.file, ss.location.line, ss.variableName);
66
+ const existing = safeMap.get(key);
67
+ if (existing) {
68
+ // Merge preventsTaintFor arrays, deduplicating
69
+ for (const vt of ss.preventsTaintFor) {
70
+ if (!existing.includes(vt))
71
+ existing.push(vt);
72
+ }
73
+ }
74
+ else {
75
+ safeMap.set(key, [...ss.preventsTaintFor]);
76
+ }
77
+ }
78
+ return sources.filter((source) => {
79
+ if (source.declarationKey && safeDeclarationKeys.has(source.declarationKey)) {
80
+ return false;
81
+ }
82
+ const key = safeSourceKey(source.location.file, source.location.line, source.variableName);
83
+ return !safeMap.has(key);
84
+ });
85
+ }
86
+ // =============================================================================
87
+ // Pattern 1: Constant Literal Declarations
88
+ // =============================================================================
89
+ function detectConstantLiterals(sourceFile, filePath, mutatedBindings, safeSources, safeConstArrayDecls) {
90
+ for (const statement of sourceFile.statements) {
91
+ if (!ts.isVariableStatement(statement))
92
+ continue;
93
+ const declList = statement.declarationList;
94
+ // Must use const keyword
95
+ if (!(declList.flags & ts.NodeFlags.Const))
96
+ continue;
97
+ for (const decl of declList.declarations) {
98
+ if (!ts.isIdentifier(decl.name) || !decl.initializer)
99
+ continue;
100
+ const varName = decl.name.text;
101
+ // Skip if THIS declaration's binding is mutated (identity-based check)
102
+ const declKey = nodeIdentityKey(decl, sourceFile);
103
+ if (mutatedBindings.has(declKey))
104
+ continue;
105
+ const init = decl.initializer;
106
+ const { line } = sourceFile.getLineAndCharacterOfPosition(decl.getStart());
107
+ if (ts.isStringLiteral(init)) {
108
+ safeSources.push({
109
+ patternId: 'constant-literal-string',
110
+ variableName: varName,
111
+ location: { file: filePath, line: line + 1 },
112
+ declarationKey: declKey,
113
+ confidence: 'high',
114
+ preventsTaintFor: ALL_VULN_TYPES,
115
+ });
116
+ }
117
+ else if (ts.isNumericLiteral(init)) {
118
+ safeSources.push({
119
+ patternId: 'constant-literal-number',
120
+ variableName: varName,
121
+ location: { file: filePath, line: line + 1 },
122
+ declarationKey: declKey,
123
+ confidence: 'high',
124
+ preventsTaintFor: ALL_VULN_TYPES,
125
+ });
126
+ }
127
+ else if (init.kind === ts.SyntaxKind.TrueKeyword ||
128
+ init.kind === ts.SyntaxKind.FalseKeyword) {
129
+ safeSources.push({
130
+ patternId: 'constant-literal-string', // booleans share constant pattern
131
+ variableName: varName,
132
+ location: { file: filePath, line: line + 1 },
133
+ declarationKey: declKey,
134
+ confidence: 'high',
135
+ preventsTaintFor: ALL_VULN_TYPES,
136
+ });
137
+ }
138
+ else if (ts.isArrayLiteralExpression(init) && isAllLiteralElements(init)) {
139
+ safeConstArrayDecls.add(declKey);
140
+ safeSources.push({
141
+ patternId: 'constant-literal-array',
142
+ variableName: varName,
143
+ location: { file: filePath, line: line + 1 },
144
+ declarationKey: declKey,
145
+ confidence: 'high',
146
+ preventsTaintFor: ALL_VULN_TYPES,
147
+ });
148
+ }
149
+ }
150
+ }
151
+ }
152
+ /**
153
+ * Check if every element of an array literal is a primitive literal.
154
+ */
155
+ function isAllLiteralElements(arr) {
156
+ return arr.elements.every(isLiteralNode);
157
+ }
158
+ function isLiteralNode(node) {
159
+ return (ts.isStringLiteral(node) ||
160
+ ts.isNumericLiteral(node) ||
161
+ node.kind === ts.SyntaxKind.TrueKeyword ||
162
+ node.kind === ts.SyntaxKind.FalseKeyword);
163
+ }
164
+ // =============================================================================
165
+ // Pattern 2: Built-in Directory References
166
+ // =============================================================================
167
+ function detectScopedSafeSources(sourceFile, filePath, safeConstArrayDecls, safeSources) {
168
+ const scope = new ScopeStack();
169
+ const visit = (node) => {
170
+ const isScope = isScopeNode(node);
171
+ if (isScope)
172
+ scope.enterScope(node);
173
+ registerNodeDeclarations(node, scope);
174
+ if (ts.isIdentifier(node)) {
175
+ const name = node.text;
176
+ if (name === '__dirname' || name === '__filename') {
177
+ if (!isInsideUnsafePathCall(node)) {
178
+ const patternId = name === '__dirname' ? 'builtin-dirname' : 'builtin-filename';
179
+ const binding = findAssignedBinding(node, sourceFile, scope, true);
180
+ if (binding) {
181
+ safeSources.push({
182
+ patternId,
183
+ variableName: binding.variableName,
184
+ location: { file: filePath, line: binding.declarationLine },
185
+ declarationKey: binding.declarationKey,
186
+ confidence: 'high',
187
+ preventsTaintFor: ['path_traversal'],
188
+ });
189
+ }
190
+ }
191
+ }
192
+ }
193
+ if (ts.isPropertyAccessExpression(node) && isImportMetaProperty(node)) {
194
+ const propName = node.name.text;
195
+ if (propName === 'dirname' || propName === 'url') {
196
+ if (!isInsideUnsafePathCall(node)) {
197
+ const binding = findAssignedBinding(node, sourceFile, scope, true);
198
+ if (binding) {
199
+ safeSources.push({
200
+ patternId: propName === 'dirname' ? 'builtin-import-meta-dirname' : 'builtin-import-meta-url',
201
+ variableName: binding.variableName,
202
+ location: { file: filePath, line: binding.declarationLine },
203
+ declarationKey: binding.declarationKey,
204
+ confidence: 'high',
205
+ preventsTaintFor: ['path_traversal'],
206
+ });
207
+ }
208
+ }
209
+ }
210
+ }
211
+ if (ts.isCallExpression(node) && isReaddirCall(node)) {
212
+ const arg = node.arguments[0];
213
+ if (arg && isSafePathArg(arg)) {
214
+ const binding = findAssignedBinding(node, sourceFile, scope);
215
+ if (binding) {
216
+ safeSources.push({
217
+ patternId: 'safe-readdir',
218
+ variableName: binding.variableName,
219
+ location: { file: filePath, line: binding.declarationLine },
220
+ declarationKey: binding.declarationKey,
221
+ confidence: 'medium',
222
+ preventsTaintFor: ['path_traversal'],
223
+ });
224
+ }
225
+ }
226
+ }
227
+ if (ts.isElementAccessExpression(node) && ts.isIdentifier(node.expression)) {
228
+ const decl = scope.resolveDeclaration(node.expression.text);
229
+ const declKey = decl ? nodeIdentityKey(decl, sourceFile) : null;
230
+ if (declKey && safeConstArrayDecls.has(declKey)) {
231
+ const binding = findAssignedBinding(node, sourceFile, scope);
232
+ if (binding) {
233
+ safeSources.push({
234
+ patternId: 'constant-element-access',
235
+ variableName: binding.variableName,
236
+ location: { file: filePath, line: binding.declarationLine },
237
+ declarationKey: binding.declarationKey,
238
+ confidence: 'high',
239
+ preventsTaintFor: ['injection', 'xss'],
240
+ });
241
+ }
242
+ }
243
+ }
244
+ ts.forEachChild(node, visit);
245
+ if (isScope)
246
+ scope.leaveScope();
247
+ };
248
+ visit(sourceFile);
249
+ }
250
+ /**
251
+ * Check if a PropertyAccessExpression is on `import.meta`.
252
+ */
253
+ function isImportMetaProperty(node) {
254
+ return node.expression.kind === ts.SyntaxKind.MetaProperty;
255
+ }
256
+ /**
257
+ * Check if a call expression is fs.readdirSync or fs.promises.readdir.
258
+ */
259
+ function isReaddirCall(node) {
260
+ const expr = node.expression;
261
+ if (ts.isPropertyAccessExpression(expr)) {
262
+ const methodName = expr.name.text;
263
+ if (methodName === 'readdirSync' || methodName === 'readdir') {
264
+ if (ts.isIdentifier(expr.expression)) {
265
+ return expr.expression.text === 'fs';
266
+ }
267
+ if (ts.isPropertyAccessExpression(expr.expression)) {
268
+ return (ts.isIdentifier(expr.expression.expression) &&
269
+ expr.expression.expression.text === 'fs' &&
270
+ expr.expression.name.text === 'promises');
271
+ }
272
+ }
273
+ }
274
+ return false;
275
+ }
276
+ /**
277
+ * Check if an AST node is a provably safe path argument.
278
+ * Must be ONE of: string literal, built-in ref (__dirname/__filename/import.meta.dirname/url),
279
+ * or a nested path.join/resolve call where ALL arguments are themselves safe.
280
+ */
281
+ function isSafePathArg(node) {
282
+ if (ts.isStringLiteral(node))
283
+ return true;
284
+ if (ts.isIdentifier(node) && (node.text === '__dirname' || node.text === '__filename')) {
285
+ return true;
286
+ }
287
+ if (ts.isPropertyAccessExpression(node) && isImportMetaProperty(node)) {
288
+ const propName = node.name.text;
289
+ return propName === 'dirname' || propName === 'url';
290
+ }
291
+ if (ts.isCallExpression(node) && isPathJoinOrResolve(node)) {
292
+ return node.arguments.every((arg) => isSafePathArg(arg));
293
+ }
294
+ return false;
295
+ }
296
+ /**
297
+ * Check if a node is inside a path.join/resolve call that has any unsafe arguments.
298
+ */
299
+ function isInsideUnsafePathCall(node) {
300
+ let current = node.parent;
301
+ while (current) {
302
+ if (ts.isCallExpression(current) && isPathJoinOrResolve(current)) {
303
+ return !current.arguments.every((arg) => isSafePathArg(arg));
304
+ }
305
+ if (ts.isVariableDeclaration(current) || ts.isBinaryExpression(current)) {
306
+ break;
307
+ }
308
+ current = current.parent;
309
+ }
310
+ return false;
311
+ }
312
+ /**
313
+ * Check if a call is path.join() or path.resolve().
314
+ */
315
+ function isPathJoinOrResolve(node) {
316
+ if (!ts.isPropertyAccessExpression(node.expression))
317
+ return false;
318
+ const methodName = node.expression.name.text;
319
+ if (methodName !== 'join' && methodName !== 'resolve')
320
+ return false;
321
+ if (!ts.isIdentifier(node.expression.expression))
322
+ return false;
323
+ return node.expression.expression.text === 'path';
324
+ }
325
+ // =============================================================================
326
+ // Helpers
327
+ // =============================================================================
328
+ /**
329
+ * Collect declaration identity keys for bindings that appear on the LHS of
330
+ * any assignment expression. Uses the scope stack to resolve each mutated
331
+ * identifier to its declaring node, so that an inner shadowed variable
332
+ * does not poison the outer declaration.
333
+ *
334
+ * Returns a Set of identity strings (file:line:col) — NOT raw names.
335
+ */
336
+ function collectMutatedBindings(sourceFile) {
337
+ const mutated = new Set();
338
+ const scope = new ScopeStack();
339
+ const visit = (node) => {
340
+ const isScope = isScopeNode(node);
341
+ if (isScope)
342
+ scope.enterScope(node);
343
+ // Register all declaration types (var/let/const, destructuring, params, catch)
344
+ registerNodeDeclarations(node, scope);
345
+ if (ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
346
+ // Direct assignment: ITEMS = ...
347
+ if (ts.isIdentifier(node.left)) {
348
+ const decl = scope.resolveDeclaration(node.left.text);
349
+ if (decl) {
350
+ mutated.add(nodeIdentityKey(decl, sourceFile));
351
+ }
352
+ }
353
+ // Element assignment: ITEMS[0] = ...
354
+ if (ts.isElementAccessExpression(node.left) && ts.isIdentifier(node.left.expression)) {
355
+ const decl = scope.resolveDeclaration(node.left.expression.text);
356
+ if (decl) {
357
+ mutated.add(nodeIdentityKey(decl, sourceFile));
358
+ }
359
+ }
360
+ // Property assignment: ITEMS.prop = ...
361
+ if (ts.isPropertyAccessExpression(node.left) && ts.isIdentifier(node.left.expression)) {
362
+ const decl = scope.resolveDeclaration(node.left.expression.text);
363
+ if (decl) {
364
+ mutated.add(nodeIdentityKey(decl, sourceFile));
365
+ }
366
+ }
367
+ }
368
+ ts.forEachChild(node, visit);
369
+ if (isScope)
370
+ scope.leaveScope();
371
+ };
372
+ visit(sourceFile);
373
+ return mutated;
374
+ }
375
+ /**
376
+ * Walk up the AST to find the variable name a node is assigned to.
377
+ *
378
+ * When `traversePathCalls` is true, continues traversal through safe path
379
+ * utility calls (path.join, path.resolve) but stops at arbitrary calls.
380
+ * Used for built-in refs that may be arguments to path.join() etc.
381
+ */
382
+ function findAssignedBinding(node, sourceFile, scope, traversePathCalls = false) {
383
+ let current = node.parent;
384
+ while (current) {
385
+ if (ts.isVariableDeclaration(current) && ts.isIdentifier(current.name)) {
386
+ const declLine = sourceFile.getLineAndCharacterOfPosition(current.getStart(sourceFile)).line + 1;
387
+ return {
388
+ variableName: current.name.text,
389
+ declarationKey: nodeIdentityKey(current, sourceFile),
390
+ declarationLine: declLine,
391
+ };
392
+ }
393
+ if (ts.isBinaryExpression(current) &&
394
+ current.operatorToken.kind === ts.SyntaxKind.EqualsToken &&
395
+ ts.isIdentifier(current.left)) {
396
+ const decl = scope.resolveDeclaration(current.left.text);
397
+ const target = decl ?? current.left;
398
+ const declLine = sourceFile.getLineAndCharacterOfPosition(target.getStart(sourceFile)).line + 1;
399
+ return {
400
+ variableName: current.left.text,
401
+ declarationKey: decl ? nodeIdentityKey(decl, sourceFile) : null,
402
+ declarationLine: declLine,
403
+ };
404
+ }
405
+ // Bail at expression types that combine values — the safe builtin
406
+ // may be mixed with unsafe data (template literals, string concat, constructors)
407
+ if (ts.isBinaryExpression(current))
408
+ return null; // non-= binary (+ etc.) — = already handled above
409
+ if (ts.isTemplateExpression(current))
410
+ return null;
411
+ if (ts.isNewExpression(current))
412
+ return null;
413
+ if (ts.isCallExpression(current)) {
414
+ if (traversePathCalls && isPathJoinOrResolve(current)) {
415
+ current = current.parent;
416
+ continue;
417
+ }
418
+ return null;
419
+ }
420
+ current = current.parent;
421
+ }
422
+ return null;
423
+ }
424
+ //# sourceMappingURL=safe-source-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-source-detector.js","sourceRoot":"","sources":["../../../src/agents/control_flow/safe-source-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Safe-Source Pattern Definitions
3
+ *
4
+ * Declarative registry of patterns for recognizing provably non-tainted data sources.
5
+ * Safe sources are excluded from taint tracking to prevent false positives.
6
+ *
7
+ * Per contract: safe-source-patterns.md v1.0
8
+ * Per FR-001 through FR-004: Each pattern matches a specific, provable AST shape.
9
+ */
10
+ import type { VulnerabilityType, Confidence } from './types.js';
11
+ /**
12
+ * How the safe source is matched in the AST.
13
+ */
14
+ export type SafeSourceMatchType = 'constant_declaration' | 'builtin_reference' | 'safe_function_return' | 'constant_element_access';
15
+ /**
16
+ * Criteria for matching a safe source pattern against AST nodes.
17
+ */
18
+ export interface SafeSourceMatchCriteria {
19
+ type: SafeSourceMatchType;
20
+ /** Exact identifier names to match (e.g., ['__dirname', '__filename']) */
21
+ identifiers?: string[];
22
+ /** Function names whose return values are safe (e.g., ['readdirSync']) */
23
+ callTargets?: string[];
24
+ /** If true, declaration must be at module level */
25
+ requireModuleScope?: boolean;
26
+ /** If true, initializer must be a literal value */
27
+ requireLiteralInitializer?: boolean;
28
+ }
29
+ /**
30
+ * A declarative safe-source pattern definition.
31
+ */
32
+ export interface SafeSourcePattern {
33
+ id: string;
34
+ name: string;
35
+ description: string;
36
+ preventsTaintFor: VulnerabilityType[];
37
+ match: SafeSourceMatchCriteria;
38
+ confidence: Confidence;
39
+ }
40
+ /**
41
+ * Runtime instance of a detected safe source.
42
+ */
43
+ export interface SafeSourceInstance {
44
+ patternId: string;
45
+ variableName: string;
46
+ location: {
47
+ file: string;
48
+ line: number;
49
+ };
50
+ declarationKey?: string | null;
51
+ confidence: Confidence;
52
+ preventsTaintFor: VulnerabilityType[];
53
+ }
54
+ export declare const SAFE_SOURCE_REGISTRY_VERSION = "1.0";
55
+ export declare const EXPECTED_PATTERN_COUNT = 9;
56
+ /**
57
+ * All vulnerability types for patterns that prevent taint universally.
58
+ */
59
+ export declare const ALL_VULN_TYPES: VulnerabilityType[];
60
+ export declare const SAFE_SOURCE_PATTERNS: SafeSourcePattern[];
61
+ //# sourceMappingURL=safe-source-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-source-patterns.d.ts","sourceRoot":"","sources":["../../../src/agents/control_flow/safe-source-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMhE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,sBAAsB,GACtB,mBAAmB,GACnB,sBAAsB,GACtB,yBAAyB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mDAAmD;IACnD,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;CACvC;AAMD,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAClD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAQ7C,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EA6GnD,CAAC"}